柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù) Mysql 集群技術(shù)
柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù) Mysql 集群技術(shù)
目錄
在Linux下部署mysql
安裝依賴(lài)性:
下載并解壓源碼包
源碼編譯安裝mysql
?在Linux下部署mysql
4GB 2核
官網(wǎng):MySQL
然后cmake --help
?編輯
缺少了C的編譯工具
繼續(xù)檢測(cè)
刪了之后重新檢測(cè)
安裝一下libtirpc軟件
用兩個(gè)核編譯
回車(chē)開(kāi)始編譯
部署mysql
測(cè)試:
mysql啟動(dòng)腳本
?編輯
修改環(huán)境變量
記錄初始化的密碼
啟動(dòng)mysql
開(kāi)機(jī)自啟動(dòng)mysql
mysql的安全初始化
拷貝
mysql的組從復(fù)制
配置mastesr
配置salve
測(cè)試:
開(kāi)啟二進(jìn)制日志
↑數(shù)據(jù)傳輸 數(shù)據(jù)回放
當(dāng)有數(shù)據(jù)時(shí)添加slave2
測(cè)試:
延遲復(fù)制
測(cè)試:
慢查詢(xún)?nèi)罩?/p>
開(kāi)啟慢查詢(xún)?nèi)罩?/p>
測(cè)試慢查詢(xún)
mysql的并行復(fù)制
半同步模式
半同步模式原理
gtid模式
設(shè)置gtid
啟用半同步模式
在master端配置啟用半同步模式
在slave端開(kāi)啟半同步功能
測(cè)試
在master端寫(xiě)入數(shù)據(jù)
模擬故障:
mysql高可用之組復(fù)制 (MGR)
編輯主配置文件:
測(cè)試:
mysql-router(mysql路由)
測(cè)試:
MHA部署實(shí)施
搭建主兩從架構(gòu)
安裝MHA所需要的軟件
在Linux下部署mysql
安裝依賴(lài)性:
[root@mysql-node10 ~]# dnf install cmake gcc-c++ openssl-devel \
ncurses-devel.x86_64 libtirpc-devel-1.3.3-8.el7_4.x86_64.rpm rpcgen.x86_64
下載并解壓源碼包
[root@mysql-node10 ~]# tar zxf mysql-boost-5.7.44.tar.gz
[root@mysql-node10 ~]# cd /root/mysql-5.7.44
源碼編譯安裝mysql
[root@mysql-node10 mysql-5.7.44]# cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ #指定安裝路徑
-DMYSQL_DATADIR=/data/mysql \ #指定數(shù)據(jù)目錄
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \ #指定套接字文件
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #指定啟用INNODB存儲(chǔ)引擎,默認(rèn)
用myisam
-DWITH_EXTRA_CHARSETS=all \ #擴(kuò)展字符集
-DDEFAULT_CHARSET=utf8mb4 \ #指定默認(rèn)字符集
-DDEFAULT_COLLATION=utf8mb4_unicode_ci \ #指定默認(rèn)校驗(yàn)字符集
-DWITH_BOOST=/root/mysql-5.7.44/boost/boost_1_59_0/ #指定c++庫(kù)依賴(lài)
[root@mysql-node10 mysql-5.7.44]# make -j2 #-j2 表示有幾個(gè)
核心就跑幾個(gè)進(jìn)程
[root@mysql-node10 mysql-5.7.44# make install
?在Linux下部署mysql
4GB 2核
官網(wǎng):MySQL
然后cmake --help
缺少了C的編譯工具
yum install gcc gcc-c++ -y
繼續(xù)檢測(cè)
刪了之后重新檢測(cè)
安裝一下libtirpc軟件
用兩個(gè)核編譯
回車(chē)開(kāi)始編譯
make install
部署mysql
#生成啟動(dòng)腳本
[root@node10 ~]# dnf install initscripts-10.11.6-1.el9.x86_64 -y
[root@node10 ~]# cd /usr/local/mysql/support-files/
[root@node10 support-files]# cp mysql.server /etc/init.d/mysqld
#修改環(huán)境變量
[root@node10 ~]# vim ~/.bash_profile
export PATH=$PATH:/usr/local/mysql/bin
[root@node10 ~]# source ~/.bash_profile
#生成數(shù)據(jù)目錄
[root@mysql-node1 ~]# useradd -s /sbin/nologin -M mysql
[root@mysql-node1 ~]# mkdir -p /data/mysql
[root@mysql-node1 ~]# chown mysql.mysql /data/mysql/
#修改配置文件
[root@node10 my.cnf.d]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql #指定數(shù)據(jù)目錄
socket=/data/mysql/mysql.sock #指定套接字
symbolic-links=0 #數(shù)據(jù)只能存放到數(shù)據(jù)目錄中,禁止鏈接到數(shù)據(jù)目錄
#數(shù)據(jù)庫(kù)初始化建立mysql基本數(shù)據(jù)
[root@node10 ~]# mysqld --initialize --user=mysql
[root@node10 ~]# /etc/init.d/mysqld start
[root@node10 ~]# chkconfig mysqld on
#數(shù)據(jù)庫(kù)安全初始化
[root@node10 ~]# mysql_secure_installation
Securing the MySQL server deployment.
Enter password for user root: #輸入當(dāng)前密碼
The existing password for the user account root has expired. Please set a new
password.
New password: #輸入新密碼
Re-enter new password: #重復(fù)密碼
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: no #是否啟用密碼插件
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : no
#是否要重置密碼
... skipping.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No)
: y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
測(cè)試:
[root@node10 ~]# mysql -uroot -plee
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.44 Source distribution
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
mysql啟動(dòng)腳本
修改環(huán)境變量
用戶(hù)初始化
hsgDn8OYrO/:
記錄初始化的密碼
echo …… >> passwd
啟動(dòng)mysql
開(kāi)機(jī)自啟動(dòng)mysql
mysql的安全初始化
拷貝
mysql的組從復(fù)制
配置mastesr
[root@mysql-node10 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
log-bin=mysql-bin
server-id=1
[root@mysql-node10 ~]# /etc/init.d/mysqld restart
#進(jìn)入數(shù)據(jù)庫(kù)配置用戶(hù)權(quán)限
[root@mysql-node10 ~]# mysql -plee
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.44-log Source distribution
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'lee'; ##生成專(zhuān)門(mén)用來(lái)做復(fù)制的用
戶(hù),此用戶(hù)是用于slave端做認(rèn)證用
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%'; ##對(duì)這個(gè)用戶(hù)進(jìn)行授權(quán)
mysql> SHOW MASTER STATUS; ##查看master的狀態(tài)
+------------------+----------+--------------+------------------+----------------
---+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
Executed_Gtid_Set |
+------------------+----------+--------------+------------------+----------------
---+
| mysql-bin.000001 | 350 | | |
|
+------------------+----------+--------------+------------------+----------------
---+
1 row in set (0.00 sec)
[root@mysql-node10 ~]# cd /data/mysql/
[root@mysql-node10 mysql]# mysqlbinlog mysql-bin.000001 -vv ##查看二進(jìn)制日志
配置salve
[root@mysql-node2 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
server-id=2
[root@mysql-node2 ~]# /etc/init.d/mysqld restart
[root@mysql-node2 ~]# mysql -plee
mysql> CHANGE MASTER TO
MASTER_HOST='172.25.254.10',MASTER_USER='repl',MASTER_PASSWORD='lee',MASTER_LOG_F
ILE='mysql-bin.000001',MASTER_LOG_POS=350;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW SLAVE STATUS\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.25.254.10
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 350
Relay_Log_File: mysql-node2-relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 350
Relay_Log_Space: 533
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
Master_UUID: 888d2164-4b05-11ef-a049-000c299355ea
Master_Info_File: /data/mysql/master.info
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for more
updates
Master_Retry_Count: 86400
Master_Bind:
Last_IO_Error_Timestamp:
Last_SQL_Error_Timestamp:
Master_SSL_Crl:
Master_SSL_Crlpath:
Retrieved_Gtid_Set:
Executed_Gtid_Set:
Auto_Position: 0
Replicate_Rewrite_DB:
Channel_Name:
Master_TLS_Version:
1 row in set (0.00 sec
測(cè)試:
[root@mysql-node10 ~]# mysql -plee
mysql> CREATE DATABASE lee;
Query OK, 1 row affected (0.00 sec)
mysql> CREATE TABLE lee.userlist (
-> username varchar(20) not null,
-> password varchar(50) not null
-> );
Query OK, 0 rows affected (0.02 sec)
mysql> INSERT INTO lee.userlist VALUE ('lee','123');
Query OK, 1 row affected (0.02 sec)
mysql> SELECT * FROM lee.userlist;
+----------+----------+
| username | password |
+----------+----------+
| lee | 123 |
+----------+----------+
1 row in set (0.00 sec)
在slave中查看數(shù)據(jù)是否有同步過(guò)來(lái)
[root@mysql-node2 ~]# mysql -plee
mysql> SELECT * FROM lee.userlist;
+----------+----------+
| username | password |
+----------+----------+
| lee | 123 |
+----------+----------+
1 row in set (0.00 sec)
在
slave
階段中默認(rèn)情況下是開(kāi)啟了寫(xiě)功能的,但是建議關(guān)閉
slave
節(jié)點(diǎn)的寫(xiě)功能來(lái)保證數(shù)據(jù)一致性
vim /etc/mysql.cnf
[mysqld]
super_read_only=on
開(kāi)啟二進(jìn)制日志
change master to master_host='172.25.254.10',master_user='repl',master_passw ord='123',master_log_file='mysql-bin.000001',master_log_pos=595;
↑數(shù)據(jù)傳輸 數(shù)據(jù)回放
當(dāng)有數(shù)據(jù)時(shí)添加slave2
#完成基礎(chǔ)配置
[root@mysql-node3 ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/data/mysql/mysql.sock
symbolic-links=0
server-id=3
[root@mysql-node3 ~]# /etc/init.d/mysqld restart
#從master節(jié)點(diǎn)備份數(shù)據(jù)
[root@mysql-node1 ~]# mysqldump -uroot -plee lee > lee.sql
#利用master節(jié)點(diǎn)中備份出來(lái)的lee.sql在slave2中拉平數(shù)據(jù)
[root@mysql-node3 ~]# mysql -uroot -plee -e "create database lee;"
[root@mysql-node3 ~]# mysql -uroot -p lee [root@mysql-node3 ~]# mysql -uroot -plee -e "select * from lee.userlist;" mysql: [Warning] Using a password on the command line interface can be insecure. +----------+----------+ | username | password | +----------+----------+ | user1 | 123 | | user2 | 123 | +----------+----------+ #配置slave2的slave功能 #在master中查詢(xún)?nèi)罩緋os mysql -uroot -plee -e "SHOW MASTER STATUS;" mysql: [Warning] Using a password on the command line interface can be insecure. +------------------+----------+--------------+------------------+---------------- ---+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+---------------- ---+ | mysql-bin.000001 | 1251 | | | | +------------------+----------+--------------+------------------+---------------- ---+ [root@mysql-node3 ~]# mysql -uroot -plee mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl', MASTER_PASSWORD='lee', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=1251; mysql> start slave; mysql> SHOW SLAVE STATUS\G; *************************** 1. row *************************** Slave_IO_State: Connecting to master Master_Host: 172.25.254.30 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000001 Read_Master_Log_Pos: 1251 Relay_Log_File: mysql-node3-relay-bin.000001 Relay_Log_Pos: 4 Relay_Master_Log_File: mysql-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 1251 Relay_Log_Space: 154 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: NULL Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 1130 Last_IO_Error: error connecting to master 'repl@172.25.254.30:3306' - retry-time: 60 retries: 1 Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 0 Master_UUID: Master_Info_File: /data/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: 240727 19:14:25 Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 0 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec) 測(cè)試: [root@mysql-node1 ~]# mysql -uroot -plee -e "INSERT INTO lee.userlist VALUES('user3','123');" [root@mysql-node2 mysql]# mysql -uroot -plee -e 'select * from lee.userlist;' mysql: [Warning] Using a password on the command line interface can be insecure. +----------+----------+ | username | password | +----------+----------+ | user1 | 123 | | user2 | 123 | | user3 | 123 | +----------+----------+ [root@mysql-node3 ~]# mysql -uroot -plee -e 'select * from lee.userlist;' mysql: [Warning] Using a password on the command line interface can be insecure. +----------+----------+ | username | password | +----------+----------+ | user1 | 123 | | user2 | 123 | | user3 | 123 | +----------+----------+ 延遲復(fù)制 #在slave端 mysql> STOP SLAVE SQL_THREAD; mysql> CHANGE MASTER TO MASTER_DELAY=60; mysql> START SLAVE SQL_THREAD; mysql> SHOW SLAVE STATUS\G; Master_Server_Id: 1 Master_UUID: db2d8c92-4dc2-11ef-b6b0-000c299355ea Master_Info_File: /data/mysql/master.info SQL_Delay: 60 ##延遲效果 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 測(cè)試: 在 master 中寫(xiě)入數(shù)據(jù)后過(guò)了延遲時(shí)間才能被查詢(xún)到 慢查詢(xún)?nèi)罩?/p> 開(kāi)啟慢查詢(xún)?nèi)罩?/p> mysql> SET GLOBAL slow_query_log=ON; Query OK, 0 rows affected (0.00 sec) mysql> SET long_query_time=4; Query OK, 0 rows affected (0.00 sec) mysql> SHOW VARIABLES like "long%"; +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 4.000000 | +-----------------+----------+ 1 row in set (0.00 sec) mysql> SHOW VARIABLES like "slow%"; +---------------------+----------------------------------+ | Variable_name | Value | +---------------------+----------------------------------+ | slow_launch_time | 2 | | slow_query_log | ON | ##慢查詢(xún)?nèi)罩鹃_(kāi)啟 | slow_query_log_file | /data/mysql/mysql-node1-slow.log | +---------------------+----------------------------------+ 3 rows in set (0.01 sec) [root@mysql-node1 ~]# cat /data/mysql/mysql-node1-slow.log #慢查詢(xún)?nèi)罩?/p> /usr/local/mysql/bin/mysqld, Version: 5.7.44-log (Source distribution). started with: Tcp port: 3306 Unix socket: /data/mysql/mysql.sock Time Id Command Argument 測(cè)試慢查詢(xún) mysql> select sleep (10); [root@mysql-node1 ~]# cat /data/mysql/mysql-node1-slow.log /usr/local/mysql/bin/mysqld, Version: 5.7.44-log (Source distribution). started with: Tcp port: 3306 Unix socket: /data/mysql/mysql.sock Time Id Command Argument # Time: 2024-07-29T17:04:07.612704Z # User@Host: root[root] @ localhost [] Id: 8 # Query_time: 10.000773 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0 SET timestamp=1722272647; select sleep (10); mysql的并行復(fù)制 在slaves中設(shè)定 [root@mysql-node2 ~]# vim /etc/my.cnf [mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock server-id=2 gtid_mode=ON enforce-gtid-consistency=ON slave-parallel-type=LOGICAL_CLOCK #基于組提交, slave-parallel-workers=16 #開(kāi)啟線程數(shù)量 master_info_repository=TABLE #master信息在表中記錄,默認(rèn)記錄 在/data/mysql//master.info relay_log_info_repository=TABLE #回放日志信息在表中記錄,默認(rèn)記錄 在/data/mysql/relay-log.info relay_log_recovery=ON #日志回放恢復(fù)功能開(kāi)啟 [root@mysql-node2 ~]# /etc/init.d/mysql start Starting MySQL. SUCCESS! 半同步模式 半同步模式原理 1. 用戶(hù)線程寫(xiě)入完成后 master 中的 dump 會(huì)把日志推送到 slave 端 2.slave 中的 io 線程接收后保存到 relaylog 中繼日志 3. 保存完成后 slave 向 master 端返回 ack 4. 在未接受到 slave 的 ack 時(shí) master 端時(shí)不做提交的,一直處于等待當(dāng)收到 ack 后提交到存儲(chǔ)引擎 5. 在 5.6 版本中用到的時(shí) after_commit 模式, after_commit 模式時(shí)先提交在等待 ack 返回后輸出 ok gtid模式 [root@mysql-node1 ~]# mysqlbinlog -vv /data/mysql/mysql-bin.000003 @@省略?xún)?nèi)容@@ SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/; DELIMITER ; # End of log file /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/; /*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/; [root@mysql-node2 ~]# mysql -plee mysql> select * from mysql.gtid_executed; +--------------------------------------+----------------+--------------+ | source_uuid | interval_start | interval_end | +--------------------------------------+----------------+--------------+ | 768c6b91-4c01-11ef-a514-000c299355ea | 1 | 1 | +--------------------------------------+----------------+--------------+ 1 row in set (0.00 sec) 設(shè)置gtid #在master端和slave端開(kāi)啟gtid模式 [root@mysql-node1 ~]# vim /etc/my.cnf [mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock server-id=1 log-bin=mysql-bin gtid_mode=ON enforce-gtid-consistency=ON symbolic-links=0 [root@mysql-node1 ~]# /etc/init.d/mysqld restart [root@mysql-node2 ~]# vim /etc/my.cnf [mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock server-id=2 log-bin=mysql-bin gtid_mode=ON enforce-gtid-consistency=ON symbolic-links=0 [root@mysql-node2 ~]# /etc/init.d/mysqld restart [root@mysql-node3 ~]# vim /etc/my.cnf [mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock server-id=3 log-bin=mysql-bin gtid_mode=ON enforce-gtid-consistency=ON symbolic-links=0 [root@mysql-node3 ~]# /etc/init.d/mysqld restart #停止slave端 [root@mysql-node2 ~]# mysql -p mysql> stop slave; Query OK, 0 rows affected (0.00 sec) [root@mysql-node3 ~]# mysql -p mysql> stop slave; Query OK, 0 rows affected (0.01 sec) #開(kāi)啟slave端的gtid mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl', MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1; mysql> start slave; mysql> show slave status\G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 172.25.254.10 Master_User: repl Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 154 Relay_Log_File: mysql-node2-relay-bin.000002 Relay_Log_Pos: 367 Relay_Master_Log_File: mysql-bin.000003 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 154 Relay_Log_Space: 580 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_UUID: 768c6b91-4c01-11ef-a514-000c299355ea Master_Info_File: /data/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates Master_Retry_Count: 86400 Master_Bind: Last_IO_Error_Timestamp: Last_SQL_Error_Timestamp: Master_SSL_Crl: Master_SSL_Crlpath: Retrieved_Gtid_Set: Executed_Gtid_Set: Auto_Position: 1 #功能開(kāi)啟 Replicate_Rewrite_DB: Channel_Name: Master_TLS_Version: 1 row in set (0.00 sec) 啟用半同步模式 在master端配置啟用半同步模式 [root@mysql-node1 ~]# vim /etc/my.cnf [mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock server-id=1 log-bin=mysql-bin gtid_mode=ON enforce-gtid-consistency=ON rpl_semi_sync_master_enabled=1 #開(kāi)啟半同步功能 symbolic-links=0 [root@mysql-node1 ~]# mysql -p lee #安裝半同步插件 mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; #查看插件情況 mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS -> FROM INFORMATION_SCHEMA.PLUGINS -> WHERE PLUGIN_NAME LIKE '%semi%'; +----------------------+---------------+ | PLUGIN_NAME | PLUGIN_STATUS | +----------------------+---------------+ | rpl_semi_sync_master | ACTIVE | +----------------------+---------------+ 1 row in set (0.01 sec) #打開(kāi)半同步功能 mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1; #查看半同步功能狀態(tài) mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%'; +-------------------------------------------+------------+ | Variable_name | Value | +-------------------------------------------+------------+ | rpl_semi_sync_master_enabled | ON | | rpl_semi_sync_master_timeout | 10000 | | rpl_semi_sync_master_trace_level | 32 | | rpl_semi_sync_master_wait_for_slave_count | 1 | | rpl_semi_sync_master_wait_no_slave | ON | | rpl_semi_sync_master_wait_point | AFTER_SYNC | +-------------------------------------------+------------+ mysql> SHOW STATUS LIKE 'Rpl_semi_sync%'; +--------------------------------------------+-------+ | Variable_name | Value | +--------------------------------------------+-------+ | Rpl_semi_sync_master_clients | 0 | | Rpl_semi_sync_master_net_avg_wait_time | 0 | | Rpl_semi_sync_master_net_wait_time | 0 | | Rpl_semi_sync_master_net_waits | 0 | | Rpl_semi_sync_master_no_times | 0 | | Rpl_semi_sync_master_no_tx | 0 | | Rpl_semi_sync_master_status | ON | | Rpl_semi_sync_master_timefunc_failures | 0 | | Rpl_semi_sync_master_tx_avg_wait_time | 0 | | Rpl_semi_sync_master_tx_wait_time | 0 | | Rpl_semi_sync_master_tx_waits | 0 | | Rpl_semi_sync_master_wait_pos_backtraverse | 0 | | Rpl_semi_sync_master_wait_sessions | 0 | | Rpl_semi_sync_master_yes_tx | 0 | +--------------------------------------------+-------+ 14 rows in set (0.00 sec) mysql> show plugins 在slave端開(kāi)啟半同步功能 [root@mysql-node2 ~]# vim /etc/my.cnf [mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock server-id=1 log-bin=mysql-bin gtid_mode=ON enforce-gtid-consistency=ON rpl_semi_sync_master_enabled=1 #開(kāi)啟半同步功能 symbolic-links=0 [root@mysql-node2 ~]# mysql -plee mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; Query OK, 0 rows affected (0.01 sec) mysql> SET GLOBAL rpl_semi_sync_slave_enabled =1; Query OK, 0 rows affected (0.00 sec) mysql> STOP SLAVE IO_THREAD; #重啟io線程,半同步才能生效 Query OK, 0 rows affected (0.00 sec) mysql> START SLAVE IO_THREAD; ##重啟io線程,半同步才能生效 Query OK, 0 rows affected (0.00 sec) mysql> SHOW VARIABLES LIKE 'rpl_semi_sync%'; +---------------------------------+-------+ | Variable_name | Value | +---------------------------------+-------+ | rpl_semi_sync_slave_enabled | ON | | rpl_semi_sync_slave_trace_level | 32 | +---------------------------------+-------+ 2 rows in set (0.01 sec) mysql> SHOW STATUS LIKE 'Rpl_semi_sync%'; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | Rpl_semi_sync_slave_status | ON | +----------------------------+-------+ 1 row in set (0.00 sec) 測(cè)試 在master端寫(xiě)入數(shù)據(jù) [root@mysql-node1 ~]# mysql -p lee mysql> insert into lee.userlist values ('user4','123'); Query OK, 1 row affected (0.01 sec) mysql> SHOW STATUS LIKE 'Rpl_semi_sync%'; +--------------------------------------------+-------+ | Variable_name | Value | +--------------------------------------------+-------+ | Rpl_semi_sync_master_clients | 2 | | Rpl_semi_sync_master_net_avg_wait_time | 0 | | Rpl_semi_sync_master_net_wait_time | 0 | | Rpl_semi_sync_master_net_waits | 2 | | Rpl_semi_sync_master_no_times | 0 | | Rpl_semi_sync_master_no_tx | 0 | #未同步數(shù)據(jù)0筆 | Rpl_semi_sync_master_status | ON | | Rpl_semi_sync_master_timefunc_failures | 0 | | Rpl_semi_sync_master_tx_avg_wait_time | 981 | | Rpl_semi_sync_master_tx_wait_time | 981 | | Rpl_semi_sync_master_tx_waits | 1 | | Rpl_semi_sync_master_wait_pos_backtraverse | 0 | | Rpl_semi_sync_master_wait_sessions | 0 | | Rpl_semi_sync_master_yes_tx | 1 | #已同步數(shù)據(jù)1筆 +--------------------------------------------+-------+ 14 rows in set (0.00 sec) 模擬故障: #在slave端 [root@mysql-node2 ~]# mysql -plee mysql> STOP SLAVE IO_THREAD; Query OK, 0 rows affected (0.00 sec) [root@mysql-node3 ~]# mysql -plee mysql> STOP SLAVE IO_THREAD; Query OK, 0 rows affected (0.00 sec) #在master端插入數(shù)據(jù) mysql> insert into lee.userlist values ('user5','555'); Query OK, 1 row affected (10.00 sec) #10秒超時(shí) mysql> SHOW STATUS LIKE 'Rpl_semi%'; +--------------------------------------------+-------+ | Variable_name | Value | +--------------------------------------------+-------+ | Rpl_semi_sync_master_clients | 0 | | Rpl_semi_sync_master_net_avg_wait_time | 0 | | Rpl_semi_sync_master_net_wait_time | 0 | | Rpl_semi_sync_master_net_waits | 2 | | Rpl_semi_sync_master_no_times | 1 | | Rpl_semi_sync_master_no_tx | 1 | #一筆數(shù)據(jù)為同步 | Rpl_semi_sync_master_status | OFF | #自動(dòng)轉(zhuǎn)為異步模式,當(dāng) slave恢復(fù) | Rpl_semi_sync_master_timefunc_failures | 0 | #會(huì)自動(dòng)恢復(fù) | Rpl_semi_sync_master_tx_avg_wait_time | 981 | | Rpl_semi_sync_master_tx_wait_time | 981 | | Rpl_semi_sync_master_tx_waits | 1 | | Rpl_semi_sync_master_wait_pos_backtraverse | 0 | | Rpl_semi_sync_master_wait_sessions | 0 | | Rpl_semi_sync_master_yes_tx | 1 | +--------------------------------------------+-------+ 14 rows in set (0.00 sec) mysql高可用之組復(fù)制 (MGR) 編輯主配置文件: #在mysql-node10中 [root@mysql-node10 ~]# rm -fr /data/mysql/ [root@mysql-node10 ~]# vim /etc/my.cnf [mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock symbolic-links=0 server-id=1 #配置server唯一標(biāo)識(shí)號(hào) disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY" #禁用指定存儲(chǔ) 引擎 gtid_mode=ON #啟用全局事件標(biāo)識(shí) enforce_gtid_consistency=ON #強(qiáng)制gtid一致 master_info_repository=TABLE #復(fù)制事件數(shù)據(jù)到表中而不記錄在數(shù)據(jù)目錄中 relay_log_info_repository=TABLE binlog_checksum=NONE #禁止對(duì)二進(jìn)制日志校驗(yàn) log_slave_updates=ON #打開(kāi)數(shù)據(jù)庫(kù)中繼, #當(dāng)slave中sql線程讀取日志后也會(huì)寫(xiě)入到自己的binlog中 log_bin=binlog #重新指定log名稱(chēng) binlog_format=ROW #使用行日志格式 plugin_load_add='group_replication.so' #加載組復(fù)制插件 transaction_write_set_extraction=XXHASH64 #把每個(gè)事件編碼為加密散列 group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" #通知插件正 式加入 #或創(chuàng)建的組 名 #名稱(chēng)為 uuid格式 group_replication_start_on_boot=off #在server啟動(dòng)時(shí)不自動(dòng)啟動(dòng)組復(fù) 制 group_replication_local_address="172.25.254.10:33061" #指定插件接受其他成員的信息端 口 group_replication_group_seeds="172.25.254.10:33061,172.25.254.20:33061, 172.25.254.30:33061" #本地地址允許訪 問(wèn)成員列表 group_replication_ip_whitelist="172.25.254.0/24,127.0.0.1/8" #主機(jī)白名單 #不隨系統(tǒng)自啟而啟動(dòng),只在初始成員主機(jī)中手動(dòng)開(kāi)啟, #需要在兩種情況下做設(shè)定:1.初始化建組時(shí) 2.關(guān)閉并重新啟動(dòng)整個(gè)組時(shí) group_replication_bootstrap_group=off group_replication_single_primary_mode=OFF #使用多主模式 group_replication_enforce_update_everywhere_checks=ON #組同步中有任何改變 檢測(cè)更新 group_replication_allow_local_disjoint_gtids_join=1 #放棄自己信息以 master事件為主 [root@mysql-node10 ~]# mysqld --user=mysql --initialize [root@mysql-node10 ~]# /etc/init.d/mysqld start [root@mysql-node10 ~]# mysql -uroot -p初始化后生成的密碼 -e "alter user root@localhost identified by 'lee';" #配置sql [root@mysql-node10 ~]# mysql -plee mysql> SET SQL_LOG_BIN=0; Query OK, 0 rows affected (0.00 sec) mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'lee'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> SET SQL_LOG_BIN=1; Query OK, 0 rows affected (0.00 sec) mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='lee' FOR CHANNEL 'group_replication_recovery'; Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> SET GLOBAL group_replication_bootstrap_group=ON; #用以指定初始成員,值在第 一臺(tái)主機(jī)中執(zhí)行 Query OK, 0 rows affected (0.00 sec) mysql> START GROUP_REPLICATION; Query OK, 0 rows affected, 1 warning (2.19 sec) mysql> SET GLOBAL group_replication_bootstrap_group=OFF; Query OK, 0 rows affected (0.00 sec) mysql> SELECT * FROM performance_schema.replication_group_members; # 在復(fù)制配置文件到 myql-node20 和 mysql-node30 [root@mysql-node20 & 30 ~]# scp /etc/my.cnf root@172.25.254.20:/etc/my.cnf [root@mysql-node20 & 30 ~]# scp /etc/my.cnf root@172.25.254.30:/etc/my.cnf #修改mysql—node20和mysl-node30中的配置 [root@mysql-node20 & 30 ~]# rm -fr /data/mysql/ [root@mysql-node10 ~]# vim /etc/my.cnf [mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock symbolic-links=0 server-id=2 #在30上寫(xiě)3 disabled_storage_engines="MyISAM,BLACKHOLE,FEDERATED,ARCHIVE,MEMORY" gtid_mode=ON enforce_gtid_consistency=ON master_info_repository=TABLE relay_log_info_repository=TABLE binlog_checksum=NONE log_slave_updates=ON log_bin=binlog binlog_format=ROW plugin_load_add='group_replication.so' transaction_write_set_extraction=XXHASH64 group_replication_group_name="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" group_replication_start_on_boot=off group_replication_local_address="172.25.254.20:33061" #在30上要寫(xiě)30 group_replication_group_seeds="172.25.254.10:33061,172.25.254.20:33061, 172.25.254.30:33061" group_replication_ip_whitelist="172.25.254.0/24,127.0.0.1/8" group_replication_bootstrap_group=off group_replication_single_primary_mode=OFF group_replication_enforce_update_everywhere_checks=ON group_replication_allow_local_disjoint_gtids_join=1 [root@mysql-node10 ~]# mysqld --user=mysql --initialize [root@mysql-node10 ~]# /etc/init.d/mysqld start [root@mysql-node10 ~]# mysql -uroot -p初始化后生成的密碼 -e "alter user root@localhost identified by 'lee';" #配置sql [root@mysql-node20 & 30 ~]# mysql -plee mysql> SET SQL_LOG_BIN=0; Query OK, 0 rows affected (0.00 sec) mysql> CREATE USER rpl_user@'%' IDENTIFIED BY 'lee'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT REPLICATION SLAVE ON *.* TO rpl_user@'%'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> SET SQL_LOG_BIN=1; Query OK, 0 rows affected (0.00 sec) mysql> CHANGE MASTER TO MASTER_USER='rpl_user', MASTER_PASSWORD='lee' FOR CHANNEL 'group_replication_recovery'; Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> START GROUP_REPLICATION; Query OK, 0 rows affected, 1 warning (2.19 sec) mysql> SELECT * FROM performance_schema.replication_group_members; 測(cè)試: 在每個(gè)節(jié)點(diǎn)都可以完成讀寫(xiě) #在mysql-node10中 [root@mysql-node10 ~]# mysql -p mysql> CREATE DATABASE lee; Query OK, 1 row affected (0.00 sec) mysql> CREATE TABLE lee.userlist( -> username VARCHAR(10) PRIMARY KEY NOT NULL, -> password VARCHAR(50) NOT NULL -> ); Query OK, 0 rows affected (0.01 sec) mysql> INSERT INTO lee.userlist VALUES ('user1','111'); Query OK, 1 row affected (0.00 sec) mysql> SELECT * FROM lee.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 111 | +----------+----------+ 1 row in set (0.00 sec) #在mysql-node20中 [root@mysql-node20 ~]# mysql -p mysql> INSERT INTO lee.userlist values ('user2','222'); Query OK, 1 row affected (0.00 sec) mysql> select * from lee.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 111 | | user2 | 222 | +----------+----------+ 2 rows in set (0.00 sec) #mysql—node30中 [root@mysql-node30 ~]# mysql -p mysql> INSERT INTO lee.userlist values ('user3','333'); Query OK, 1 row affected (0.00 sec) mysql> select * from lee.userlist; +----------+----------+ | username | password | +----------+----------+ | user1 | 111 | | user2 | 222 | | user3 | 333 | +----------+----------+ 3 rows in set (0.00 sec) mysql-router(mysql路由) #安裝mysql-router [root@mysql-router ~]# rpm -ivh mysql-router-community-8.4.0-1.el7.x86_64.rpm #配置mysql-router [root@mysql-router ~]# vim /etc/mysqlrouter/mysqlrouter.conf [routing:ro] bind_address = 0.0.0.0 bind_port = 7001 destinations = 172.25.254.10:3306,172.25.254.20:3306,172.25.254.30:3306 routing_strategy = round-robin [routing:rw] bind_address = 0.0.0.0 bind_port = 7002 destinations = 172.25.254.30:3306,172.25.254.20:3306,172.25.254.10:3306 routing_strategy = first-available [root@mysql-router ~]# systemctl start mysqlrouter.service 測(cè)試: #建立測(cè)試用戶(hù) mysql> CREATE USER lee@'%' IDENTIFIED BY 'lee'; mysql> GRANT ALL ON lee.* TO lee@'%'; #查看調(diào)度效果 [root@mysql-node10 & 20 & 30 ~]# watch -1 lsof -i :3306 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME mysqld 9879 mysql 22u IPv6 56697 0t0 TCP *:mysql (LISTEN) [root@mysql-router ~]# mysql -ulee -plee -h 172.25.254.40 -P 7001 mysql router 并不能限制數(shù)據(jù)庫(kù)的讀寫(xiě),訪問(wèn)分流 MHA部署實(shí)施 搭建主兩從架構(gòu) #在master節(jié)點(diǎn)中 [root@mysql-node10 ~]# /etc/init.d/mysqld stop [root@mysql-node10 ~]# rm -fr /data/mysql/* [root@mysql-node10 ~]# vim /etc/my.cnf [mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock server-id=1 log-bin=mysql-bin gtid_mode=ON log_slave_updates=ON enforce-gtid-consistency=ON symbolic-links=0 [root@mysql-node10 ~]# mysqld --user mysql --initialize [root@mysql-node10 ~]# /etc/init.d/mysqld start [root@mysql-node10 ~]# mysql_secure_installation [root@mysql-node10 ~]# mysql -p mysql> CREATE USER 'repl'@'%' IDENTIFIED BY 'lee'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'%'; Query OK, 0 rows affected (0.00 sec) mysql> INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; Query OK, 0 rows affected (0.02 sec) mysql> SET GLOBAL rpl_semi_sync_master_enabled = 1; Query OK, 0 rows affected (0.00 sec) #在slave1和slave2中 [root@mysql-node20 & 30 ~]# /etc/init.d/mysqld stop [root@mysql-node20 & 30 ~]# rm -fr /data/mysql/* [root@mysql-node20 & 30 ~]# vim /etc/my.cnf [mysqld] datadir=/data/mysql socket=/data/mysql/mysql.sock server-id=1 log-bin=mysql-bin gtid_mode=ON log_slave_updates=ON enforce-gtid-consistency=ON symbolic-links=0 [root@mysql-node20 & 30 ~]# mysqld --user mysql --initialize [root@mysql-node20 & 300 ~]# /etc/init.d/mysqld start [root@mysql-node20 & 30 ~]# mysql_secure_installation [root@mysql-node20 & 30 ~]# mysql -p mysql> CHANGE MASTER TO MASTER_HOST='172.25.254.10', MASTER_USER='repl', MASTER_PASSWORD='lee', MASTER_AUTO_POSITION=1; Query OK, 0 rows affected, 2 warnings (0.00 sec) mysql> start slave; Query OK, 0 rows affected (0.00 sec) mysql> INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; Query OK, 0 rows affected (0.01 sec) mysql> SET GLOBAL rpl_semi_sync_slave_enabled =1; Query OK, 0 rows affected (0.00 sec) mysql> STOP SLAVE IO_THREAD; Query OK, 0 rows affected (0.00 sec) mysql> START SLAVE IO_THREAD; Query OK, 0 rows affected (0.00 sec) mysql> SHOW STATUS LIKE 'Rpl_semi_sync%'; +----------------------------+-------+ | Variable_name | Value | +----------------------------+-------+ | Rpl_semi_sync_slave_status | ON | +----------------------------+-------+ 1 row in set (0.01 sec) 安裝MHA所需要的軟件 #在MHA中 [root@mysql-mha ~]# unzip MHA-7.zip [root@mysql-mha MHA-7]# ls mha4mysql-manager-0.58-0.el7.centos.noarch.rpm perl-Mail-Sender-0.8.23- 1.el7.noarch.rpm mha4mysql-manager-0.58.tar.gz perl-Mail-Sendmail-0.79- 21.el7.noarch.rpm mha4mysql-node-0.58-0.el7.centos.noarch.rpm perl-MIME-Lite-3.030- 1.el7.noarch.rpm perl-Config-Tiny-2.14-7.el7.noarch.rpm perl-MIME-Types-1.38- 2.el7.noarch.rpm perl-Email-Date-Format-1.002-15.el7.noarch.rpm perl-Net-Telnet-3.03- 19.el7.noarch.rpm perl-Log-Dispatch-2.41-1.el7.1.noarch.rpm perl-Parallel-ForkManager-1.18- 2.el7.noarch.rpm [root@mysql-mha MHA-7]# yum install *.rpm -y [root@mysql-mha MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@172.25.254.10:/mnt [root@mysql-mha MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@172.25.254.20:/mnt [root@mysql-mha MHA-7]# scp mha4mysql-node-0.58-0.el7.centos.noarch.rpm root@172.25.254.30:/mnt #在sql-node中 [root@mysql-node10 ~]# yum install /mnt/mha4mysql-node-0.58- 0.el7.centos.noarch.rpm -y [root@mysql-node20 ~]# yum install /mnt/mha4mysql-node-0.58- 0.el7.centos.noarch.rpm -y [root@mysql-node30 ~]# yum install /mnt/mha4mysql-node-0.58- 0.el7.centos.noarch.rpm -y 柚子快報(bào)邀請(qǐng)碼778899分享:數(shù)據(jù)庫(kù) Mysql 集群技術(shù) 推薦鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。