docker搭建mysql主从服务器

docker搭建mysql主从服务器

软件版本

mysql:5.7.27

服务器规划

这里采用一主一从的架构如下所示:
mysql-master(主)192.168.77.130:3306
mysql-slave (从)192.168.77.131:3306

用户名:root
密码:123456

服务场景

mysql-master 只负责写操作
mysql-slave 负责读操作

在192.168.77.130上安装mysql-master主数据库

创建目录:

mkdir -p /etc/mysql/conf.d
mkdir -p /var/lib/mysql

安装mysql:

docker run --name mysql-master --restart always -p 3306:3306 -v /etc/mysql/conf.d:/etc/mysql/conf.d -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.27

在192.168.77.131上安装mysql-slave从数据库

创建目录:

mkdir -p /etc/mysql/conf.d
mkdir -p /var/lib/mysql

安装mysql:

docker run --name mysql-slave --restart always -p 3306:3306 -v /etc/mysql/conf.d:/etc/mysql/conf.d -v /var/lib/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.27

主从数据库具体配置

分别在mysql-master和mysql-slave配置文件目录/etc/mysql/conf.d创建配置文件my.cnf

配置mysql-master主数据库,修改my.cnf加入如下配置:

[mysqld]
log-bin=mysql-bin
server-id=1

binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
binlog-ignore-db=sys

binlog-do-db=demo

重启mysql-master让配置生效:

docker restart mysql-master

配置mysql-slave从数据库,修改my.cnf加入如下配置:

[mysqld]
server-id=2

replicate-do-db=demo
replicate-ignore-db=mysql
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
replicate-ignore-db=sys

重启mysql-slave让配置生效

docker restart mysql-slave

在mysql-master上创建复制用户给mysql-slave使用

CREATE USER 'replication'@'192.168.77.131' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'replication'@'192.168.77.131';
flush privileges;

在mysql-slave开启IO复制线程

CHANGE MASTER TO 
MASTER_HOST='192.168.77.130', 
MASTER_PORT=3306,
MASTER_USER='replication', 
MASTER_PASSWORD='123456', 
MASTER_LOG_FILE='mysql-bin.000001', 
MASTER_LOG_POS=3289;

START SLAVE; //开启IO复制线程

MASTER_LOG_FILE和MASTER_LOG_POS通过在mysql-master上运行如下命令获取:

show master status;
+------------------+----------+--------------+-------------------------------------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB                                | Executed_Gtid_Set |
+------------------+----------+--------------+-------------------------------------------------+-------------------+
| mysql-bin.000001 |     3289 | demo         | mysql,information_schema,performance_schema,sys |                   |
+------------------+----------+--------------+-------------------------------------------------+-------------------+

查看mysql-slave复制状态

show slave status\G;

出现如下字段表名IO复制线程已经正常运行:

Slave_IO_State: Waiting for master to send event  
Slave_IO_Running: Yes  
Slave_SQL_Running: Yes  
Seconds_Behind_Master: 0

在mysql-master上查看mysql-slave是否连接到主数据库:

show slave hosts;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值