MySQL主從(MS)、主主(MM)複製
阿新 • • 發佈:2018-12-24
一、安裝MySQL 5.7
- 如果安裝過mysql,刪除
停掉mysql程序:
pkill -9 mysqld
刪除mysql:
rpm -qa|grep -i mysql
yum -y remove
mysql-community-client-5.6.38-2.el7.x86_64
依次解除安裝 直到沒有
- yum安裝
cd /usr/local/src/ wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm rpm -ivh mysql57-community-release-el7-8.noarch.rpm yum -y install mysql-server
預設配置檔案路徑:
- 配置檔案:/etc/my.cnf
- 日誌檔案:/var/log/mysqld.log
- 服務啟動指令碼:/usr/lib/systemd/system/mysqld.service
- socket檔案:/var/run/mysqld/mysqld.pid
- 啟動mysql
service mysqld restart
檢視臨時密碼:
$ grep "password" /var/log/mysqld.log
臨時密碼資訊如下:
[Note] A temporary password is generated for [email protected] : M:sd6OoNZkz1
用臨時密碼登入:
mysql -uroot -p
修改密碼(密碼8位以上,大小寫字母+數字+特殊符號):
set password for [email protected] = password('Node2018!');
二、Navicat連線mysql
登入mysql,檢視現有的user:
mysql -uroot -pNode2018! mysql> select host,user from mysql.user; +-----------+---------------+ | host | user | +-----------+---------------+ | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+---------------+ 3 rows in set (0.01 sec)
建立一個新的賬號:
CREATE USER 'root'@'%' IDENTIFIED BY 'Node2018!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
重新整理許可權:
FLUSH PRIVILEGES;
三、主從複製配置
編輯mysql的配置檔案: vim /etc/my.cnf
192.168.7.2:
log-bin=mysql-bin #binlog檔案的字首,可以修改
binlog-format=ROW #選擇row模式
server_id=2 #必須,不同mysql不能重複
log_slave_updates=1 #開啟以後從庫會記錄主庫同步的binlog。
auto_increment_increment=2 #步進值,一般有n臺主MySQL就填n。
auto_increment_offset=1 #起始值。一般填第n臺主MySQL。
192.168.7.3:
log-bin=mysql-bin #binlog檔案的字首,可以修改
binlog-format=ROW #選擇row模式
server_id=3 #必須,不同mysql不能重複
log_slave_updates=1 #開啟以後從庫會記錄主庫同步的binlog。
auto_increment_increment=2 #步進值,一般有n臺主MySQL就填n。
auto_increment_offset=1 #起始值。一般填第n臺主MySQL。
192.168.7.4:
log-bin=mysql-bin #binlog檔案的字首,可以修改
binlog-format=ROW #選擇row模式
server_id=4 #必須,不同mysql不能重複
log_slave_updates=1 #開啟以後從庫會記錄主庫同步的binlog。
分別重啟192.168.7.2、192.168.7.3、192.168.7.4上的mysql:
service mysqld restart
在192.168.7.2新建複製賬號:
CREATE USER user73 IDENTIFIED BY 'Node2018!';
GRANT ALL PRIVILEGES ON *.* TO 'user73'@'%' ;
FLUSH PRIVILEGES;
CREATE USER user74 IDENTIFIED BY 'Node2018!';
GRANT ALL PRIVILEGES ON *.* TO 'user74'@'%' ;
FLUSH PRIVILEGES;
在192.168.7.3上配置複製的master資訊:
CHANGE MASTER TO
MASTER_HOST='192.168.7.2',
MASTER_USER='user73',
MASTER_PASSWORD='Node2018!',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=2340;
在192.168.7.4上配置複製的master資訊:
CHANGE MASTER TO
MASTER_HOST='192.168.7.2',
MASTER_USER='user74',
MASTER_PASSWORD='Node2018!',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=2340;
開啟複製並檢視複製狀態:
START SLAVE;
SHOW SLAVE STATUS\G;
四、主主複製配置
7.2 和7.5 配置主主複製
配置node5的my.cnf:
log-bin=mysql-bin #binlog檔案的字首,可以修改
binlog-format=ROW #選擇row模式
server_id=5 #必須,不同mysql不能重複
log_slave_updates=1 #開啟以後從庫會記錄主庫同步的binlog。
auto_increment_increment=2 #步進值,一般有n臺主MySQL就填n。
auto_increment_offset=2 #起始值。一般填第n臺主MySQL。
在72上建立一個75上能訪問的賬號:
CREATE USER user75 IDENTIFIED BY 'Node2018!';
GRANT ALL PRIVILEGES ON *.* TO 'user75'@'%' ;
FLUSH PRIVILEGES;
在75上建立一個72上能訪問的賬號:
CREATE USER user72 IDENTIFIED BY 'Node2018!';
GRANT ALL PRIVILEGES ON *.* TO 'user72'@'%' ;
FLUSH PRIVILEGES;
互相change master:
CHANGE MASTER TO
MASTER_HOST='192.168.7.5',
MASTER_USER='user72',
MASTER_PASSWORD='Node2018!',
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=154;
CHANGE MASTER TO
MASTER_HOST='192.168.7.2',
MASTER_USER='user75',
MASTER_PASSWORD='Node2018!',
MASTER_LOG_FILE='mysql-bin.000005',
MASTER_LOG_POS=1761;