1. 程式人生 > >詳細配置主從同步的方法

詳細配置主從同步的方法

行數據 docker 編輯 ng- load -- operator 備份 rep

1)安裝mysql

我們在ubuntu中已經有安裝一臺mysql了,現在使用docker安裝另外一臺mysql

獲取mysql的鏡像,主從同步盡量保證多臺mysql的版本相同,我們的ubuntu中存在的mysql是5.7.22版本,所以獲取5.7.22版本的鏡像

docker image pull mysql:5.7.22
或
docker load -i mysql_docker_5722.tar

運行mysql docker鏡像,需要在宿主機中建立文件目錄用於mysql容器保存數據和讀取配置文件。

在家目錄中(/home/python)中創建目錄,將mysql的配置文件放到此目錄中

cd ~
mkdir mysql_slave
cd mysql_slave
mkdir data
cp /etc/mysql/mysql.conf.d ./

我們要將docker運行的mysql作為slave來運行,開啟前需要修改配置文件。

編輯 ~/mysql_slave/mysql.conf.d/mysqld.cnf 文件,修改

port  =  8306
general_log  = 0
server-id  = 2

我們讓此臺mysql運行在8306端口上,且mysql編號為2

創建docker容器

docker run --name mysql-slave -e MYSQL_ROOT_PASSWORD=mysql -d --network=host -v /home/python/mysql_slave/data:/var/lib/mysql -v /home/python/mysql_slave/mysql.conf.d:/etc/mysql/mysql.conf.d  mysql:5.7.22
  • MYSQL_ROOT_PASSWORD 是創建mysql root用戶的密碼

測試,在ubuntu中使用mysql命令嘗試連接docker容器中的mysql

mysql -uroot -pmysql -h 127.0.0.1 --port=8306

2)備份主服務器原有數據到從服務器

如果在設置主從同步前,主服務器上已有大量數據,可以使用mysqldump進行數據備份並還原到從服務器以實現數據的復制。

在主服務器Ubuntu上進行備份,執行命令:

mysqldump -uroot -pmysql --all-databases --lock-all-tables > ~/master_db.sql

技術分享圖片

  • -u :用戶名

  • -p :示密碼

  • --all-databases :導出所有數據庫

  • --lock-all-tables :執行操作時鎖住所有表,防止操作時有數據修改

  • ~/master_db.sql :導出的備份數據(sql文件)位置,可自己指定

在docker容器中導入數據

mysql -uroot -pmysql -h127.0.0.1 --port=8306 < ~/master_db.sql

3)配置主服務器master(Ubuntu中的MySQL)

編輯設置mysqld的配置文件,設置log_bin和server-id

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

技術分享圖片

重啟mysql服務

sudo service mysql restart

登入主服務器Ubuntu中的mysql,創建用於從服務器同步數據使用的帳號

mysql –uroot –pmysql

GRANT REPLICATION SLAVE ON *.* TO ‘slave‘@‘%‘ identified by ‘slave‘;

FLUSH PRIVILEGES;

技術分享圖片

獲取主服務器的二進制日誌信息

SHOW MASTER STATUS;

技術分享圖片

File為使用的日誌文件名字,Position為使用的文件位置,這兩個參數須記下,配置從服務器時會用到。

4)配置從服務器slave (docker中的mysql)

進入docker中的mysql

mysql -uroot -pmysql -h 127.0.0.1 --port=8306

執行

change master to master_host=‘127.0.0.1‘, master_user=‘slave‘, master_password=‘slave‘,master_log_file=‘mysql-bin.000006‘, master_log_pos=590;
  • master_host:主服務器Ubuntu的ip地址
  • master_log_file: 前面查詢到的主服務器日誌文件名
  • master_log_pos: 前面查詢到的主服務器日誌文件位置

啟動slave服務器,並查看同步狀態

start slave;
show slave status \G

詳細配置主從同步的方法