1. 程式人生 > 實用技巧 >MySql Docker 主主配置

MySql Docker 主主配置

MySql 主主

準備2臺Linux伺服器,並且在兩臺伺服器上,同時安裝docker,國內的同學可以使用aliyun的映象安裝。

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

然後,啟動MySql 容器

docker run -p 3306:3306 --name mysql1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -p 3306:3306 --name mysql2 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

配置第一臺伺服器的mysql

# 進入mysql 容器
docker container ls 
docker exec -it mysql1 /bin/bash

# 安裝vim, 如果已經安裝,則可以略過
apt-get update
apt-get install vim

# 進入mysql 伺服器之後,修改配置檔案
cd /etc/mysql
vi my.cnf

# 增加以下配置內容

[mysqld] 
server_id = 1 
log-bin= mysql-bin
replicate-ignore-db=mysql 
replicate-ignore-db=sys 
replicate-ignore-db=information_schema 
replicate-ignore-db=performance_schema
read-only=0
relay_log=mysql-relay-bin
log-slave-updates=on
auto-increment-offset=1
auto-increment-increment=2

# 重啟mysql服務
service mysql restart
docker container start mysql1

# 建立一個使用者來同步資料,重新進入容器,然後登陸mysql
docker exec -it mysql1 /bin/bash
mysql -uroot -p123456


# 這裡表示建立一個slave同步賬號slave,允許訪問的IP地址為%,%表示萬用字元
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';


# 檢視狀態,記住File、Position的值,在另外一個伺服器中將用到
show master status;


# 檢視容器IP, 退出mysql
exit;
exit;
docker inspect mysql1 | grep IPA

配置第二臺mysql 伺服器

# 進入mysql的容器 
docker exec -it mysql2 /bin/bash

# 安裝vim, 如果已經安裝,則可以略過
apt-get update
apt-get install vim

# 修改配置檔案
cd /etc/mysql 
vi my.cnf

# 增加如下配置

[mysqld] 
server_id = 2 
log-bin= mysql-bin
replicate-ignore-db=mysql 
replicate-ignore-db=sys 
replicate-ignore-db=information_schema 
replicate-ignore-db=performance_schema
read-only=0 
relay_log=mysql-relay-bin 
log-slave-updates=on 
auto-increment-offset=2 
auto-increment-increment=2


# 重啟mysql 服務
service mysql restart 
docker start mysql2
docker exec -it mysql2 /bin/bash 
mysql -uroot -p123456

# 建立一個使用者來同步資料
GRANT REPLICATION SLAVE ON *.* to 'slave'@'%' identified by '123456';

# 設定主庫連結,master_host即為容器IP,master_log_file和
master_log_pos即為在mone容器中,通過show master status查出來
的值;
//change master to 
master_host='172.17.0.2',master_user='slave',master_passwor d='123456',master_log_file='mysql- bin.000001',master_log_pos=443,master_port=3306;

change master to master_host='159.89.85.150',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=443,master_port=3306;

# 啟動同步
start slave ;
# 檢視狀態
show master status;


# 檢視容器IP:
docker inspect mysql1 | grep IPA


# 設定完成後,再次進入第一個伺服器的容器
docker exec -it mysql1 /bin/bash
mysql -uroot -p123456

# 設定mtwo主庫連結,引數詳細說明同上
// change master to
// master_host='172.17.0.3',master_user='slave',master_passwor d='123456',master_log_file='mysql-bin.000003',master_log_pos=443,master_port=3306;

change master to
master_host='157.245.134.29',master_user='slave',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=443,master_port=3306;

# 啟動同步
start slave;

# 檢視狀態
show slave status\G;