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 statusG;