環境說明
主:centos7 192.168.11.128
從:centos7 192.168.11.129
MySQL5.7
配置主
1、 vi /etc/my.cnf
server-id=128
log_bin=master128
2、 重新開機
service mysqld restart
service mysqld status
ls -lt /var/lib/mysql
3、 建立一個資料庫為試驗做準備
mysql> create database zctest;
mysqldump -uroot -p123456 zctest > /tmp/zctest.sql #備份
scp /tmp/zctest.sql 'root'@'192.168.11.129':/tmp/ #将備份檔案傳給從庫伺服器
4、 建立同步賬号
#隻給複制權限,對所有庫所有表,ip為從伺服器的ip,賬号為root,密碼:123456
mysql> grant replication slave on *.* to 'root'@'192.168.11.129' identified by '123456';
mysql> flush tables with read lock; #先進行鎖表,等主從伺服器資料保持一緻,再解鎖表
mysql> show master status; #需要記錄file、position位置
配置從
1、 vi /etc/my.cnf
server-id=129 #必須得和主伺服器上的server-id不一樣
2、 重新開機
service mysqld restart
service mysqld status
3、 恢複資料庫
mysql -uroot -p123456 zctest < zctest.sql
4、 實作主從同步
mysql> stop slave;
#master_log_file、master_log_pos:主伺服器上
mysql> change master to master_host='192.168.11.128',master_user='root',master_password='123456',master_log_file='master128.000001',master_log_pos=615;
mysql> start slave;
mysql> show slave status\G 檢視:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
5、 解鎖主庫的表(在主上操作)
mysql> unlock tables;
主從恢複
1、 在master進行鎖表
mysql> flush tables with read lock;
2、 檢視master 狀态:
show master status; #需要記錄file、position位置
3、 停止從庫的狀态
mysql> stop slave;
4、 将從庫資料與主庫資料同步(mysqldump、手動執行等方式)
比如:
mysqldump -uroot -p123456 zctest > /tmp/zctest.sql (master)
scp zctest.sql [email protected]:/tmp/ (master)
mysql -uroot -p123456 zctest < zctest.sql (slave)
5、 設定從庫同步
#master_log_file與master_log_pos 是主庫show master status資訊裡的| File與Position
mysql> change master to master_host='192.168.11.128',master_user='root',master_password='123456',master_log_file='master128.000001',master_log_pos=1875;
6、 重新開啟從庫同步
mysql> start slave;
檢視同步狀态
mysql> show slave status\G 檢視:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes、
7、 在master上解鎖:
mysql> unlock tables;