[转]基于docker环境安装mysql并实现主从

前提:环境已经部署安装docker

1、使用Docker拉取MySQL镜像

$ docker pull mysql:5.7

2、安装主库master

2.1、创建主库挂载文件地址

mkdir -pv /usr/local/mysql/master/confmkdir -pv /usr/local/mysql/master/datamkdir -pv /usr/local/mysql/master/log

2.2、在conf下创建my.cnf文件

[mysqld]server_id=1log-bin= mysql-binexpire_logs_days=10#数据库名称忽略大小写lower_case_table_names=1log-bin= mysql-binread-only=0replicate-ignore-db=mysqlreplicate-ignore-db=sysreplicate-ignore-db=information_schemareplicate-ignore-db=performance_schema ###引用默认配置!includedir /etc/mysql/conf.d/!includedir /etc/mysql/mysql.conf.d/

2.3、安装并运行一组命令

docker run --name mysqlmaster -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -v /usr/local/mysql/master/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/master/data:/var/lib/mysql -v /usr/local/mysql/master/log:/var/log/mysql --privileged=true -d mysql:5.7 #进入容器docker exec -it mysqlmaster bash #进入mysqlmysql -u root -p #创建slaver的账号--create user  'backup'@'%'  identified by 'backup'; #授权GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by 'backup'; #刷新权限flush privileges; #查看信息show master status \G;*************************** 1. row ***************************             File: mysql-bin.000003         Position: 439     Binlog_Do_DB: Binlog_Ignore_DB:Executed_Gtid_Set:1 row in set (0.00 sec) ERROR:No query specified

3、安装从库slave

3.1、创建从库挂载文件地址

mkdir -pv /usr/local/mysql/slave/confmkdir -pv /usr/local/mysql/slave/datamkdir -pv /usr/local/mysql/slave/log

3.2、配置文件my.cnf

[mysqld]server_id=2lower_case_table_names=1log-bin= mysql-binread-only=0replicate-ignore-db=mysqlreplicate-ignore-db=sysreplicate-ignore-db=information_schemareplicate-ignore-db=performance_schemaexplicit_defaults_for_timestamp=truebind-address = 0.0.0.0###引用默认配置!includedir /etc/mysql/conf.d/!includedir /etc/mysql/mysql.conf.d/

3.3、安装并运行一组命令

docker run --name mysqlslave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -v /usr/local/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf -v /usr/local/mysql/slave/data:/var/lib/mysql -v /usr/local/mysql/slave/log:/var/log/mysql --privileged=true -d mysql:5.7 #进入容器docker exec -it mysqlslave bash#进入mysqlmysql -u root -p#执行主从change master to master_host='192.168.100.16',master_port=3306,master_user='backup',master_password='backup',master_log_file='mysql-bin.000003',master_log_pos=439; #开启复制start slave; #查看主从是否成功show slave status \G;

正常情况下,SlaveIORunning 和 SlaveSQLRunning 都是Yes 及成功,操作主库验证从库即可。

备注:执行从库的master_log_file='mysql-bin.000003',master_log_pos=439;这些一定是主库的对应的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于DockerMySQL主从数据库配置需要完成以下步骤: 1. 启动Master(主)容器:使用命令`docker run -p 3306:3306 --name main_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7`启动一个MySQL容器,并设置容器名称为main_mysql,密码为123456。 2. 连接到Master(主)容器:使用命令`docker exec -it main_mysql bash`进入Master(主)容器的命令行界面。 3. 配置Master(主):在Master(主)容器内部,编辑MySQL配置文件`my.cnf`,将`bind-address`设置为Master(主)容器的IP地址。 4. 重启Master(主)容器:使用命令`docker restart main_mysql`重启Master(主)容器使配置生效。 5. 启动Slave(从)容器:使用命令`docker run -p 3340:3306 --name slave_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7`启动一个MySQL容器,并设置容器名称为slave_mysql,密码为123456。 6. 连接到Slave(从)容器:使用命令`docker exec -it slave_mysql bash`进入Slave(从)容器的命令行界面。 7. 配置Slave(从):在Slave(从)容器内部,编辑MySQL配置文件`my.cnf`,将`bind-address`设置为Slave(从)容器的IP地址,并添加以下配置: ``` server-id = 2 relay-log = /var/lib/mysql/mysql-relay-bin relay-log-index = /var/lib/mysql/mysql-relay-bin.index log_slave_updates = 1 ``` 8. 重启Slave(从)容器:使用命令`docker restart slave_mysql`重启Slave(从)容器使配置生效。 9. 在Slave(从)容器内部执行以下命令连接到Master(主)容器并设置复制: ``` CHANGE MASTER TO MASTER_HOST='<Master(主)容器的IP地址>', MASTER_USER='root', MASTER_PASSWORD='123456', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0; ``` 10. 启动复制:在Slave(从)容器内部执行命令`START SLAVE;`启动主从复制。 11. 检查主从复制状态:在Slave(从)容器内部执行命令`SHOW SLAVE STATUS\G;`,确保"Slave_IO_Running"和"Slave_SQL_Running"都为"YES",表示主从复制已成功配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值