下文主要給大家帶來使用InnoDB Cluster解決MySQL數據庫高可用方案,希望這些內容能夠帶給大家實際用處,這也是我編輯使用InnoDB Cluster解決MySQL數據庫高可用方案這篇文章的主要目的。好了,廢話不多說,大家直接看下文吧。
MySQL InnoDB Cluster為MySQL提供了一個完整的高可用解決方案。MySQL Shell包含AdminAPI,能夠輕松地配置和管理至少三個MySQL云服務器實例組,以作為InnoDB集群。每個MySQL云服務器實例都運行MySQL Group Replication,它提供了在innodb集群中復制數據的機制,并內置故障轉移。MySQL Router可以根據您部署的集群自動配置自己,將客戶端應用程序透明地連接到云服務器實例。如果云服務器實例發生意外故障,群集將自動重新配置。在默認的單主模式下,InnoDB集群有一個讀寫云服務器實例——主云服務器。多個輔助云服務器實例是主云服務器的副本。如果主云服務器出現故障,輔助云服務器將自動提升為主云服務器的角色。MySQL Router檢測到這一點,并將客戶端應用程序轉發到新的主云服務器。
[root@wallet01 ~]# mysql -uroot -p
Enter password:
mysql> grant all privileges on *.* to 'root'@'wallet01' identified by 'abcd@1234';
Query OK, 0 rows affected, 1 warning (0.05 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.06 sec)
[root@wallet01 ~]# yum install -y mysql-shell
[root@wallet01 ~]# mysqlsh --log-level=DEBUG3
MySQL Shell 8.0.18
Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates.
Other names may be trademarks of their respective owners.
Type '\help' or '\?' for help; '\quit' to exit.
MySQL JS > shell.connect('root@wallet01:3306')
Creating a session to 'root@wallet01:3306'
Please provide the password for 'root@wallet01:3306': *********
Save password for 'root@wallet01:3306'? [Y]es/[N]o/Ne[v]er (default No): y
Fetching schema names for autocompletion... Press ^C to stop.
Your MySQL connection id is 290
Server version: 5.7.27-log MySQL Community Server (GPL)
No default schema selected; type \use <schema> to set one.
<ClassicSession:root@wallet01:3306>
MySQL wallet01:3306 JS > var cluster = dba.createCluster('walletCluster', {adoptFromGR: true})
A new InnoDB cluster will be created based on the existing replication group on instance
'wallet01:3306'.
Creating InnoDB cluster 'walletCluster' on 'wallet01:3306'...
Adding Seed Instance...
Adding Instance 'wallet03:3306'...
Adding Instance 'wallet01:3306'...
Adding Instance 'wallet02:3306'...
Resetting distributed recovery credentials across the cluster...
Cluster successfully created based on existing replication group.
MySQL wallet01:3306 JS > cluster.status();
{
"clusterName": "walletCluster",
"defaultReplicaSet": {
"name": "default",
"primary": "wallet01:3306",
"ssl": "DISABLED",
"status": "OK",
"statusText": "Cluster is ONLINE and can tolerate up to ONE failure.",
"topology": {
"wallet01:3306": {
"address": "wallet01:3306",
"mode": "R/W",
"readReplicas": {},
"role": "HA",
"status": "ONLINE"
},
"wallet02:3306": {
"address": "wallet02:3306",
"mode": "R/O",
"readReplicas": {},
"role": "HA",
"status": "ONLINE"
},
"wallet03:3306": {
"address": "wallet03:3306",
"mode": "R/O",
"readReplicas": {},
"role": "HA",
"status": "ONLINE"
}
},
"topologyMode": "Single-Primary"
},
"groupInformationSourceMember": "wallet01:3306"
}
MySQL wallet01:3306 JS > \quit
Bye![root@wallet01 ~]# yum install -y mysql-router [root@wallet01 ~]# mysqlrouter --bootstrap root@wallet01:3306 --user=mysqlrouter --name=router01 Please enter MySQL password for root: WARNING: The MySQL server does not have SSL configured and metadata used by the router may be transmitted unencrypted. # Reconfiguring system MySQL Router instance... - Checking for old Router accounts - No prior Router accounts found - Creating mysql account 'mysql_router1_a8933v9tcn8v'@'%' for cluster management - Storing account in keyring - Adjusting permissions of generated files - Creating configuration /etc/mysqlrouter/mysqlrouter.conf # MySQL Router 'router01' configured for the InnoDB cluster 'walletCluster' After this MySQL Router has been started with the generated configuration $ /etc/init.d/mysqlrouter restart or $ mysqlrouter -c /etc/mysqlrouter/mysqlrouter.conf the cluster 'walletCluster' can be reached by connecting to: ## MySQL Classic protocol - Read/Write Connections: localhost:6446 - Read/Only Connections: localhost:6447 ## MySQL X protocol - Read/Write Connections: localhost:64460 - Read/Only Connections: localhost:64470 Existing configuration backed up to '/etc/mysqlrouter/mysqlrouter.conf.bak' [root@wallet01 ~]# /etc/init.d/mysqlrouter start Starting mysqlrouter: [ OK ] [root@wallet01 ~]# /etc/init.d/mysqlrouter status mysqlrouter (pid 24451) is running... [root@wallet02 ~]# yum install -y mysql-router [root@wallet02 ~]# mysqlrouter --bootstrap root@wallet01:3306 --user=mysqlrouter --name=router02 [root@wallet02 ~]# /etc/init.d/mysqlrouter start Starting mysqlrouter: [ OK ] [root@wallet02 ~]# /etc/init.d/mysqlrouter status mysqlrouter (pid 6906) is running... [root@wallet03 ~]# yum install -y mysql-router [root@wallet03 ~]# mysqlrouter --bootstrap root@wallet01:3306 --user=mysqlrouter --name=router03 [root@wallet03 ~]# /etc/init.d/mysqlrouter start Starting mysqlrouter: [ OK ] [root@wallet03 ~]# /etc/init.d/mysqlrouter status mysqlrouter (pid 18081) is running...
對于以上關于使用InnoDB Cluster解決MySQL數據庫高可用方案,大家是不是覺得非常有幫助。如果需要了解更多內容,請繼續關注我們的行業資訊,相信你會喜歡上這些內容的。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。