docker中mysql(8.0.13)主从复制

mysql镜像获取

  • docker pull mysql:8.0.13

创建mysql启动配置文件

  • mkdir -p /home/docker/mysql/conf
  • cd /home/docker/mysql/conf
  • vim my.cnf my.cnf参数如下,注意下方备注
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
pid-file    = /var/run/mysqld/mysqld.pid
socket    = /var/run/mysqld/mysqld.sock
datadir    = /var/lib/mysql

symbolic-links=0
character-set-server = utf8
innodb_print_all_deadlocks = 1
max_connections = 2000
max_connect_errors = 6000
open_files_limit = 65535
table_open_cache = 128
max_allowed_packet = 4M
binlog_cache_size = 1M
max_heap_table_size = 8M
tmp_table_size = 16M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
sort_buffer_size = 8M
join_buffer_size = 28M
key_buffer_size = 4M
thread_cache_size = 8
ft_min_word_len = 4
# binlog日志位置及名称
log-bin = /var/lib/mysql/master
# 当前binlog日志的具体位置
log_bin_index=/var/lib/mysql/master
# 建议换成ip最后一段,只要每个mysql服务id不同即可
server-id = 97

binlog_format = mixed
expire_logs_days = 7
performance_schema = 0
explicit_defaults_for_timestamp
interactive_timeout = 28800
wait_timeout = 28800
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

[mysqldump]
quick
max_allowed_packet = 16M

[myisamchk]
key_buffer_size = 8M
sort_buffer_size = 8M
read_buffer = 4M
write_buffer = 4M

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

启动mysql服务

  • cd .. 进入mysql目录
  • vim mysql_run.sh 参数如下
docker run -d -p 3306:3306 --privileged=true -v /home/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /home/docker/mysql/data:/var/lib/mysql -v /home/mysql/mysql-files:/var/lib/mysql-files/ -e MYSQL_ROOT_PASSWORD=admin --name mysql mysql:8.0.13
  • chmod + 755 mysql_run.sh
  • ./mysql_run.sh 启动mysql容器
  • docker ps 查看mysql容器运行情况

需要几台mysql服务就重复上述操作

mysql主库设置

  • docker exec -it mysql bin/bash //进入mysql服务容器
  • mysql -uroot -padmin //登陆mysql数据库
  • create user 'slave'@'%' identified by 'slave';//创建salve用户用于从库访问
  • grant all privileges on *.* to 'slaver'@'%' with grant option;//授权 如果失败用
    GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
  • 登陆从库mysql容器
  • mysql -uroot -padmin -h ${master_ip}//master_id为主库ip,验证从库是否可以通过创建的用户访问主库
  • 登陆主库mysql数据库
  • show master status\G//查看当前主库的binlog日志文件名称及当前的position,结果如下:
  • ==================================================
    mysql> show master status\G
    *************************** 1. row ***************************
    File: master.000011 //binlog日志文件名称
    Position: 142769423 //position
    Binlog_Do_DB:
    Binlog_Ignore_DB:
    Executed_Gtid_Set:
    1 row in set (0.00 sec)
    =============

mysql从库设置

  • 登陆到从库mysql数据库
  • change master to master_host='${master_ip}', master_user='slave', master_password='slave', master_port=3306, master_log_file='master.000011, master_log_pos=142769423;//master_ip是mysql主库数据库ip,master.000011是master当前binlog日志文件名称,142769423是position
  • start slave; //启动从库
  • show slave status\G//查看从库mysql状态,结果如下:

mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 33.82.0.97
Master_User: slave
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: master.000011
Read_Master_Log_Pos: 142769423
Relay_Log_File: 5a2f0ecf2c5d-relay-bin.000026
Relay_Log_Pos: 142769631
Relay_Master_Log_File: master.000011
Slave_IO_Running: Yes //yes就行了
Slave_SQL_Running: Yes//yes就行了
Replicate_Do_DB:
…//省略

  • 多个从库重复操作

验证成功

  • 登陆mysql主库创建表create database test;
  • 登陆从库看看有没有创建成功即可。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值