Docker 中怎么实现MySQL主主复制
发表于:2024-10-05 作者:千家信息网编辑
千家信息网最后更新 2024年10月05日,Docker 中怎么实现MySQL主主复制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。安装DockerInstall Docker E
千家信息网最后更新 2024年10月05日Docker 中怎么实现MySQL主主复制
Docker 中怎么实现MySQL主主复制,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
安装Docker
Install Docker Engine on CentOS
MySQL配置
Master
新建目录data(XXXX/master/data),映射docker数据库目录
新建配置(XXXX/master/my.cnf)
[mysqld]skip-host-cacheskip-name-resolvedatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socksecure-file-priv=/var/lib/mysql-filesuser=mysqlpid-file=/var/run/mysqld/mysqld.pid# replication # server id 唯一server_id=1# STATEMENT, ROW, or MIXEDbinlog_format=ROWlog_bin=/var/lib/mysql/master-binauto-increment-increment=2auto-increment-offset=1slave-skip-errors=all# 不进行复制的数据库replicate-ignore-db=information_schemareplicate-ignore-db=mysqlreplicate-ignore-db=performance_schemareplicate-ignore-db=sys
Replica
新建目录data(XXXX/rep/data),映射docker数据库目录
新建配置(XXXX/rep/my.cnf)
[mysqld]skip-host-cacheskip-name-resolvedatadir=/var/lib/mysqlsocket=/var/lib/mysql/mysql.socksecure-file-priv=/var/lib/mysql-filesuser=mysqlpid-file=/var/run/mysqld/mysqld.pid# replication# server id 唯一server_id=2# STATEMENT, ROW, or MIXEDbinlog_format=ROWlog_bin=/var/lib/mysql/rep-binauto-increment-increment=2auto-increment-offset=1slave-skip-errors=all# 不进行复制的数据库replicate-ignore-db=information_schemareplicate-ignore-db=mysqlreplicate-ignore-db=performance_schemareplicate-ignore-db=sys
新增Bridge类型网络
docker network create mysql_net
mysql服务连接到新增的网络
mysql_net
mysql服务可以通过主机名互相访问
启动MySQL服务
Master
docker container run --name mysql_master \ --network mysql_net \ --hostname mysql_master \ --publish 33306:3306 \ --env MYSQL_ROOT_PASSWORD=123456 \ --mount type=bind,src=/xxxx/master/my.cnf,dst=/etc/my.cnf \ --mount type=bind,src=/xxxx/master/data,dst=/var/lib/mysql \ -d mysql/mysql-server:8.0 --character-set-server=utf8 --collation-server=utf8_general_ci --explicit_defaults_for_timestamp
Replica
docker container run --name mysql_rep \ --network mysql_net \ --hostname mysql_rep \ --publish 43306:3306 \ --env MYSQL_ROOT_PASSWORD=123456 \ --mount type=bind,src=/xxx/repl/my.cnf,dst=/etc/my.cnf \ --mount type=bind,src=/xxx/repl/data,dst=/var/lib/mysql \ -d mysql/mysql-server:8.0 --character-set-server=utf8 --collation-server=utf8_general_ci --explicit_defaults_for_timestamp
参数说明
XXX
:替换为有效的路径network
:指定为新增的网络mysql_net
hostname
:服务主机名publish
:端口映射([docker host Port]:[container Port])MYSQL_ROOT_PASSWORD
: MySQL默认密码mount
:挂载配置文件及数据库文件目录
查看MySQL服务是否正常启动
# 查看Docker container进程docker container ps -a | grep mysql# 查看启动日志docker container logs mysql_masterdocker container logs mysql_rep
数据库配置
新增具复制权限的用户
登录主数据库
# 登入 mysql_masterdocker container exec -it mysql_master bash# 连接数据库,密码为配置文件中指定的123456mysql -u root -p# 新增复制用户并赋复制权限CREATE USER 'dev'@'%' IDENTIFIED BY '123456';GRANT ALL ON *.* TO 'dev'@'%';
登录备数据库
# 登入 mysql_repdocker container exec -it mysql_rep bash# 连接数据库,密码为配置文件中指定的123456mysql -u root -p# 新增复制用户并赋复制权限CREATE USER 'dev'@'%' IDENTIFIED BY '123456';GRANT ALL ON *.* TO 'dev'@'%';
分别查看主从服务数据库状态
# 主数据库mysql> SHOW MASTER STATUS;+-------------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+-------------------+----------+--------------+------------------+-------------------+| master-bin.000005 | 445 | | | |+-------------------+----------+--------------+------------------+-------------------+# 备数据库mysql> SHOW MASTER STATUS;+----------------+----------+--------------+------------------+-------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |+----------------+----------+--------------+------------------+-------------------+| rep-bin.000002 | 155 | | | |+----------------+----------+--------------+------------------+-------------------+
配置数据库复制
配置备数据库mysql_rep
# MASTER_HOST:主数据库服务名# MASTER_LOG_FILE: 日志文件名称# MASTER_LOG_POS: 日志文件当前位置mysql> CHANGE MASTER TO MASTER_HOST='mysql_master', MASTER_USER='dev', MASTER_PASSWORD='123456', MASTER_LOG_FILE='master-bin.000003', MASTER_LOG_POS=692;
配置主数据库mysql_master
# MASTER_HOST: 从数据库服务名# MASTER_LOG_FILE: 日志文件名称# MASTER_LOG_POS: 日志文件当前位置mysql> CHANGE MASTER TO MASTER_HOST='mysql_rep', MASTER_USER='dev', MASTER_PASSWORD='123456', MASTER_LOG_FILE='rep-bin.000001', MASTER_LOG_POS=155;
启动复制
备数据库
mysql> start slave;
主数据库
mysql> start slave;
查看数据库状态
mysql> show master status;mysql> show slave status;
看完上述内容,你们掌握Docker 中怎么实现MySQL主主复制的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!
数据
数据库
配置
文件
服务
日志
目录
密码
权限
用户
网络
中指
主机
位置
内容
文件名
方法
更多
状态
问题
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
meta分析所用数据库
数据库表pom
惠州智能软件开发收费
闪存服务器
wpf拍照保存数据库
数据库的不安全因素
每个数据库有且只有一个
2015中美网络安全
遵化信息网络技术质量保证
上海翔辰网络技术有限公司
数据库不能存储什么文件
网络安全证书更新
图书馆数据库论文
ice服务器号到底是多少
软件开发是个什么职业
默纳克服务器插上显示ddddd
网络安全自评打分报告
jq 上传图片到数据库
梦幻西游向阳而生服务器
网站提取数据库
网络技术岗位先进事迹
家庭网络安全技巧
软件开发公司客户渠道
c 数据库备份bak文件
网站数据库密码不对怎么办
怎么考网络安全项目经理
梦幻西游新服务器怎么查
云数据库需要node吗
sql数据库表复制
网络安全售前工程师跳槽