CentOS双机中Docker下安装Mysql并配置互为主从模式
CentOS双机中Docker下安装Mysql并配置互为主从模式
目录
1、搜索镜像... 1
2、拉取镜像... 1
3、绑定端口: 1
4、配置文件(修改/etc/mysql/my.cnf文件):... 2
5、重启mysql:... 2
6、进入mysql 2
7、创建同步用户... 2
8、在mysql中查看主服务状态:... 2
9、链接master:... 3
10、启动从服务:... 3
11、查看slave状态... 3
12、B服务器如上配置... 3
附录:... 3
解决方案1:... 4
解决方案2:... 4
解决方案3:... 4
双服务器(已安装docker)如下:
A服务器:192.168.0.90
B服务器:192.168.0.230
先进入A服务器
1、搜索镜像
#docker search mysql
2、拉取镜像
#docker pull mysql:5.7
3、绑定端口:
#docker run --name test-mysql -v /data/mysql-db:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=test@2018 -d --restart=always mysql:5.7 --lower_case_table_names=1
说明:
test-mysql:镜像名称
/data/mysql-db: mysql数据文件地址
/var/lib/mysql: mysql原数据地址
-p 3306:3306:docker镜像端口3306映射到宿主端口3306
test@2018:mysql密码
-d --restart=always mysql:5.7:配置为宿主重启自启动mysql
--lower_case_table_names=1 :忽略表名大小写
4、配置文件(修改/etc/mysql/my.cnf文件):
#echo -e '[mysqld]\nlog-bin=mysql-bin\nserver-id=90' > /etc/mysql/my.cnf
mysql-bin:日志二进制文件
server-id:服务器唯一ID
skip-name-resolve:跳过域名解析【可选】
lower_case_table_names=1//忽略表名大小写sql-mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"//忽略1055信息
5、重启mysql:
#service mysql restart
6、进入mysql
#mysql -u root -p
输入mysql密码:test@2018
7、创建同步用户
a、创建备份账号及密码
mysql>grant all privileges on *.* to `test_replic`@`%` identified by 'test@2018';
b、提交
mysql>flush privileges;//
c、查看账号信息:
mysql>select host,user,authentication_string from user;
8、在mysql中查看主服务状态:
show master status;
日志文件:例:mysql-bin.000001
Position:例:596
9、链接master:
mysql>change master to master_host='192.168.0.230',master_user='test_replic',master_password='test@2018',master_log_file='mysql-bin.000001',master_log_pos=1011;
mysql-bin.000001:B服务器日志文件【查看show master status;】
1011:B服务器日志文件位置【查看show master status;】
test_replic:B服务器中第7创建的用户
test@2018:B服务器中第7创建的密码
10、启动从服务:
mysql>start slave
11、查看slave状态
mysql>show slave status\G;
当Slave_IO_Running和Slave_SQL_Running都为YES的时候就表示主从同步设置成功
12、B服务器如上配置
附录:
解决方案1:
1、停止slave
mysql> stop slave;
2、跳过错误点
mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
3、启动slave
mysql> start slave;
解决方案2:
1、停止slave
mysql> stop slave;
2、改position位置
mysql> change master to master_log_file='mysql-bin.000288',master_log_pos=627625751;
3、启动slave
mysql> start slave;
解决方案3:
删除mysql binlog
mysql>purge master logs before'2016-09-01 17:20:00';