原创

docker部署mysql主从复制记录

温馨提示:
本文最后更新于 2022年10月27日,已超过 918 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

1. 使用docker启动mysql 主节点

docker run --name mastermysql -p 3307:3306  -e MYSQL_ROOT_PASSWORD=xinhui123456 -d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

2.配置docker内的mysql配置文件(也可以使用配置文件挂载的方式)

将docker内的mysql配置文件复制出来
docker cp 镜像名:/etc/mysql/mysql.conf.d/mysqld.cnf /usr/local/docker/mysql/matser/mysqld.cnf
编辑配置文件
加入
log-bin = mysql-bin
server-id = 1
然后保存
将配置文件复制回docker镜像内
docker cp /usr/local/docker/mysql/matser/mysqld.cnf 镜像名:/etc/mysql/mysql.conf.d/mysqld.cnf 
重启mysql主节点镜像
docker restart mastermysql

3. 主节点授权

登录进mysql
mysql -u root -pmasterpwd 
也可以在navicat里运行命令
授权
GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by 'xinhui123456';

***\*(该步骤配置的账号和密码用于从节点连接使用)\****
刷新配置
FLUSH PRIVILEGES;

4. 查看主节点的相关信息

show master status

img

记录file和position值

5. 配置从节点

也是先启动从节点,再配置配置文件,然后重新启动

也是先启动从节点,再配置配置文件,然后重新启动

配置文件内容(详解见官方配置文档)

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  

query_cache_type = 1  
query_cache_size = 8M  
query_cache_limit = 2M  
ft_min_word_len = 4  
log-bin = mysql-bin
server-id = 2
binlog_format = mixed  
performance_schema = 0  
explicit_defaults_for_timestamp  
interactive_timeout = 28800  
wait_timeout = 28800  
sql_mode=NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER,STRICT_TRANS_TABLES

6.登录进从节点的docker镜像,登录mysql

change master to master_host='172.17.0.2',master_user='root',master_password='xinhui123456',master_log_file='mysql-bin.000001',master_log_pos=589;

该参数内的master_host是主节点内使用cat /etc/hosts查看到的值
master_user 和master_password 是主节点授权配置的账号密码
master_log_file和master_log_pos是主节点相关信息的数据,一定要正确

7.启动从节点(在mysql运行)

start slave
正文到此结束