MySQL主從配置說明文檔

該文檔的MySQL數據庫基於Docker設置兩個實例,MySQL-Master和MySQL-Slave兩個。

在使用Navicat for MySQL遠程連接實例時,無法連接成功,需要進行如下設置:

 

 

命令:docker exec -it mysql-master bash

登錄MySQL:root@1a435d89b15f:/# mysql -uroot -proot123

進行如下設置:

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123';

即可進行登錄。

 

 

主數據庫配置:

docker exec -it 627a2368c865[容器的id] /bin/bash或

docker exec -it mysql-master[容器的名稱] /bin/bash命令進入到Master容器內部。

 

cd /etc/mysql切換到/etc/mysql目錄下

vi my.cnf 對my.cnf進行編輯

報出bash: vi: command not found,

需要在docker容器內部自行安裝vim

先使用apt-get update命令

再使用apt-get install vim命令安裝vim

 

 

在my.cnf中新增:

[mysqld]

## 同一局域網內注意要唯一

server-id=100 

## 開啓二進制日誌功能,可以隨便取(關鍵)

log-bin=mysql-bin

 

完成後,使用service mysql restart完成重啓使生效。

重啓mysql服務時會使得docker容器停止,需啓動容器:docker start mysql-master

 

在Master數據庫創建數據同步用戶,授予用戶 slave REPLICATION SLAVE權限和REPLICATION CLIENT權限,用於在主從庫之間同步數據

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

 

從數據庫配置:

操作同上,進入容器內部,修改my.cnf文件,文件修改如下:

 

鏈接Master(主)和Slave(從):

在Master進入mysql,執行show master status;

File和Position字段的值後面將會用到,在後面的操作完成之前,需要保證Master庫不能做任何操作,否則將會引起狀態變化,File和Position字段的值變化。

 

進入Slave 中mysql,執行如下命令:

change master to master_host='172.17.0.2', master_user='slave', master_password='root123',

master_port=3306, master_log_file='binlog.000003', master_log_pos= 437,

master_connect_retry=30;

命令說明:

1、master_host:Master的地址,指的是容器的獨立ip;可通過如下命令獲取

docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-master

docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-slave

2、master_port:Master的端口號,指的是容器的端口號(內部的端口,不是外部的)

3、master_user:用於數據同步的用戶

4、master_password:用於同步的用戶的密碼

5、master_log_file:指定 Slave 從哪個日誌文件開始複製數據,上文中的 File 字段的值

6、master_log_pos:從哪個 Position 開始讀,即上文中提到的 Position 字段的值

7、master_connect_retry:如果連接失敗,重試的時間間隔,單位是秒,默認是60秒

 

show slave status \G;--用於查看主從同步狀

一般SlaveIORunning、 SlaveSQLRunning 都是No,使用start slave開啓主從複製過程,若都爲yes表明複製開始

 

 

若使用start slave開啓主從複製過程後,如果SlaveIORunning:Connecting,連接出現問題,可進行修改,之後執行如下命令:

stop slave;

change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=155, master_connect_retry=30;

start slave;

 

可以在slave的mysql中測試同步賬號連接master數據庫

root@9d8270cf51b4:/# mysql -uslave -h172.17.0.2 -p -P3306

可連接則證明賬號密碼無誤

 

在start slave 時提示Relay log 導致複製啓動失敗,可進行如下解決:

reset slave;

start slave;

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章