python中mysql主從同步配置的方法


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

 

 

 

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM