国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 服務器 > Web服務器 > 正文

詳解Docker方式實現MySql 主從復制(實踐篇)

2024-09-01 13:53:14
字體:
來源:轉載
供稿:網友

本文實踐了用Docker方式來實現基于binlog的MySql主從復制。關于MySql主從復制的原理將在下一篇中進行講解。

一些數據的本地存儲目錄結構

mysql >tree -L 2.├── data│  ├── master01│  └── slave01├── master01│  └── master01.cnf└── slave01  └── slave01.cnf

master01.cnf配置

[mysqld]log-bin=mysql-master01-bin # 使用binary logging,mysql-master01-bin是log文件名的前綴server-id=1 # 唯一服務器ID,非0整數,不能和其他服務器的server-id重復

slave01.cnf配置

[mysqld]log-bin=mysql-slave01-bin server-id=2  

創建master01容器

 

復制代碼 代碼如下:

docker run -d --name master01 -v /Users/craneyuan/backup/docker/mysql/data/master01:/var/lib/mysql -v /Users/craneyuan/backup/docker/mysql/master01:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 mysql:5.7

 

注意:啟動容器的時候不要立刻就去連接數據庫,會造成一些莫名奇妙的問題,比如連不上,可以將數據都刪掉然后restart容器。

創建slave01容器

 

復制代碼 代碼如下:

docker run -d --name slave01 -v /Users/craneyuan/backup/docker/mysql/data/slave01:/var/lib/mysql -v /Users/craneyuan/backup/docker/mysql/slave01:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 mysql:5.7

 

在master01中添加復制用戶

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';show master status; # 查看master的狀態

在slave01中配置與master01相關的內容

SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

change master to master_host='192.168.10.223',master_port=3307,master_user='backup',master_password='123456',master_log_file='mysql-master01-bin.000003', master_log_pos=154;master_host是宿主機的IP(ifconfig查到的操作系統IP,不是容器的IP,一定不能搞錯) master_port是主服務器的映射到3306的端口(默認3306) master_user為創建的備份用戶 master_password備份用戶的密碼 master_log_file和master_log_pos則是show master status列表里面的兩個值,分別是mysql日志名和起始備份位置 

啟動slave(依然在slave01中操作)

start slave; show slave status; 或者show slave status/G;

如果是Waiting for master to send event則說明主從復制成功了,若是Connecting to master肯定是配置錯誤,樓主就錯了幾次,重刪除配置一下就行,這就是容器的好處,刪除的代價很小,短時間就可以恢復。如果是Waiting for master to send event,對主庫的增刪改查從庫都會同步修改。

擴展問題

slave設置為只讀

在slave的配置文件中添加下面的選項

read-only=1    # 除非有SUPER權限,否則只讀super-read-only=1 # SUPER權限也是只讀

其他

如果master已經有數據了,怎么新增slave:可以先把master的數據導入到slave,再啟動slave。具體可以參考這里。

如果已經有主從復制了,怎么增加slave:思路同上,不過不需要使用master的數據,直接用已有的slave數據就可以了。不需要停止master,新slave使用新的server-id。具體可以參考這里。

前面介紹的都是主從,如果需要slave也能同步到master就要設置主主復制:也就是說反過來再做一遍。

當slave比較多得時候,master的負載可能會成為問題??梢杂弥鲝亩嗉墢椭疲阂詓lave為master來再引入新的slave。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丘北县| 东城区| 宾川县| 湟源县| 宜春市| 桂东县| 鹤岗市| 蓬溪县| 荣成市| 房山区| 逊克县| 岳普湖县| 城步| 盘山县| 崇明县| 泰来县| 牙克石市| 泽州县| 临武县| 永春县| 湟源县| 高碑店市| 蒙自县| 库车县| 镇江市| 南通市| 高清| 张家港市| 望城县| 莱州市| 新源县| 沙坪坝区| 靖远县| 阜新| 遵义县| 阜南县| 定西市| 天等县| 富源县| 江油市| 井研县|