您好,登錄后才能下訂單哦!
基于centos6的mysql5.7.13主從部署(二)
一、部署主mysql
說明:mysql1是主機,mysql2是備機。
創建庫
[root@mysql1 ~]# mysql -uroot -p123456
mysql> create database shiyan;
mysql> exit
Bye
將mysql庫拷貝到shiyan庫中
[root@mysql1 ~]# mysqldump -uroot -p123456 mysql > 234.sql
[root@mysql1 ~]# mysql -uroot -p123456 shiyan < 234.sql
查看是否拷貝成功
[root@mysql1 ~]# mysql -uroot -p123456
mysql> use shiyan;
mysql> show tables;
修改主my.cnf配置文件
[root@mysql1 ~]# vim /etc/my.cnf
修改內容如下:
21 server_id = 1 # 設置1為主,2為從,注意主從的id不要相同
15 log_bin = mysql-bin # 打開注釋,名字可以更改,但是必須和從庫配置相同名字
16 binlog-ignore-db = mysql # 不允許mysql庫同步
17 binlog-do-db = shiyan #允許shiyan庫同步
保存,退出!
說明:
binlog-do-db=db1,db2 //類似白名單,將需要同步的庫添進去
binlog-ignore-db=db3 //類似黑名單,將不需要同步的庫列出來
重啟mysqld服務
[root@mysql1 ~]# /etc/init.d/mysqld restart
[root@mysql1 ~]# ll /usr/local/mysql/data
可以看到兩個以mysql-bin開頭的文件,這個就是它的log-bin!
做授權相關的,做主從一定要有一個專門傳輸mysql-bin(log-bin)的用戶
[root@mysql1 ~]# mysql -uroot -p123456
mysql> grant replication slave on *.* to 'repl'@'192.168.100.128' identified by '123456';
說明:
上面命令的意思是:授權從機(slave)IP:192.168.100.128,能以賬戶repl,密碼123456遠程登入到主機復制的權限!
授權(grant)格式:grant 權限(select查詢、insert插入、update更新、delete刪除)on 數據庫對象(表、鏈) to 用戶
刷新權限
[root@mysql1 ~]# mysql -u root -p123456
mysql> flush privileges;
表的讀鎖死
mysql> flush tables with read lock;
說明:為了防止在操作過程中數據更新,導致數據不一致,所以需要先刷新數據并鎖定數據庫:flush tables with read lock。
讀一個數據
mysql> show master status;
登入數據庫驗證(在從機上)
[root@mysql2 ~]# mysql -urepl -h292.168.100.129 -p123456
二、部署從mysql2
編輯從mysql2配置文件
[root@mysql2 ~]# vim /etc/my.cnf
修改內容如下:
21 server_id = 2 # 設置1為主,2為從,注意主從的id不要相同
15 log_bin = mysql-bin # 打開注釋,名字可以更改,但是必須和從庫配置相同名字
16 binlog-ignore-db = mysql # 不允許mysql庫同步
17 binlog-do-db = shiyan #允許shiyan庫同步
保存,退出!
說明:
binlog-do-db=db1,db2 //類似白名單,將需要同步的庫添進去
binlog-ignore-db=db3 //類似黑名單,將不需要同步的庫列出來
重啟mysql服務
[root@mysql2 ~]# /etc/init.d/mysqld restart
[root@mysql2 ~]# ll /usr/local/mysql/data
在mysql2中創建shiyan庫
[root@mysql2 ~]# mysql -uroot -p123456
mysql> create database shiyan;
Query OK, 1 row affected (0.01 sec)
將主庫備份的234.sql文件導入到從庫中的shiyan庫中
[root@mysql1 ~]# scp 234.sql root@192.168.100.128:/root/
報錯:
解決方法:
[root@mysql1 ~]# yum install openssh-clients -y
說明:openssh-clients包在主從服務器上都要安裝!
[root@mysql2 ~]# mysql -uroot -p123456 shiyan < 234.sql
查看下shiyan庫
mysql> use shiyan;
mysql> show databases shiyan;
停止(從)mysql2
[root@mysql2 ~]# mysql -uroot -p123456
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
指定主庫信息(非常重要的一步)在從庫上操作!
mysql> change master to master_host='192.168.100.129',master_port=3306,master_user='repl',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=603;
說明:
這里的master_host為主庫的ip地址,特別注意語法,數字不用加單引號!
master_log_file:就是在主庫中通過show master status;查看出來的file部分;
master_log_pos:為主庫中查看出來的position部分。
啟動(從)mysql2,在mysql2上操作!
mysql> start slave;
檢測同步是否成功
說明:在mysql2上操作
mysql> show slave status\G;
注意:Slave_IO_Running和Slave_SQL_Running必須都是yes!
至此,兩臺數據庫服務器已經是同步狀態,下一步就要進行同步測試!
擴展:
如果在mysql2做同步檢查時出現如下錯誤:
可以看到Slave_IO_Running:NO
解決方法:
先查看mysql錯誤日志
[root@mysql2 ~]# cd /usr/local/mysql/data
[root@mysql2 data]# cat mysqld.err
原因分析:
mysql5.7(5.6也有)的復制引入了uuid的概念,各個復制結構中的server_uuid得保證不一樣,但是查看到直接copy data文件夾后server_uuid是相同的,show variables like '%server_uuid%';
解決方法:
找到data文件夾下的auto.cnf文件,修改里面的uuid值,保證各個db的uuid不一樣,重啟db即可!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。