https://segmentfault.com/a/1190000010199283mysql
異步複製,只會複製,最新改動,會忽略以前的改動,所以 復掉以前要把數據 dump到從機中sql
1.安裝 MySQL5.7 詳見此處
2.若是從服務器
是克隆
的主服務器
,則修改 auto.cnf
文件中 server-uuid
值,否則後面主從複製
會報 1593
錯誤,修改完記得重啓MySQL
數據庫
3.關閉主、從
服務器防火牆
:segmentfault
$ firewall-cmd --state ##查看防火牆狀態 running ##防火牆開啓 $ systemctl stop firewalld ##關閉防火牆 $ firewall-cmd --state not running ##防火牆關閉
4.修改主從配置
文件(my.cnf):服務器
## 192.168.78.128(master) bind-address=192.168.78.128 #master 服務器地址 log_bin=mysql-bin server_id=128 ## 192.168.78.130(slave) bind-address=192.168.78.130 #slave 服務器地址 log_bin=mysql-bin server_id=130
重啓
主從 MySQL
:異步
$ systemctl restart mysqld
注
: server_id
必須惟一。ide
5.master
上建立一個測試數據庫(test):測試
$ create database test; $ use test; $ create table test(id int(11), value varchar(20)); $ insert into test values(1, 'aa'),(2, 'bb'),(3, 'cc');
1.master
建立受權用戶:
192.168.78.128(master)
:ui
## 建立 test 用戶,指定該用戶只能在主庫 192.168.78.130 上使用 MyPass1! 密碼登陸 mysql> create user 'test'@'192.168.78.130' identified by 'MyPass1!'; ## 爲 test 用戶賦予 REPLICATION SLAVE 權限。 mysql> grant replication slave on *.* to 'test'@'192.168.78.130'; ## 查看用戶 mysql> select user,host from mysql.user; ## 查看 master 狀態 mysql> show master status;
注
:
這裏的 mysql-bin.000001
和 Position
值 slave
配置時須要用到。spa
2.將 master
中現有的數據信息導出
:
$ mysqldump -u root -p --all-databases --master-data > all.sql
3.將 all.sql
發送到 slave
服務器 tmp
目錄下:
$ scp all.sql root@192.168.78.130:/tmp
4.slave
導入 master
數據,使 master-slave
數據保持一致
:
192.168.78.130(slave)
:
$ mysql -uroot -p < all.sql
5.使 slave
與 master
創建鏈接,從而同步:
mysql> change master to -> master_host='192.168.78.128', -> master_user='test', -> master_password='MyPass1!', -> master_log_file='mysql-bin.000001', -> master_log_pos=1244; mysql> start slave; mysql> show slave status \G
注
:
master_log_file
和 master_log_pos
值爲主庫
上面執行show master status
獲得
若是 Slave_IO_Running
和 Slave_SQL_Running
都爲 Yes
,說明配置成功
若是其中一項不爲 Yes
,查看 Last_IO_Errno
錯誤碼和錯誤信息
,或者查看 MySQL
日誌信息並查找對應問題
master
插入一條數據,slave
查看是否成功
192.168.78.128(master)
:
192.168.78.130(slave)
: