前提:环境已经部署安装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;这些一定是主库的对应的值。