docker安装mysql并配置主从

docker安装myql

为了方便,使用一台虚拟机,开启两个mysql,分别为3306和3307

拉取mysql镜像

docker pull mysql:5.7

创建配置文件

mkdir /usr/local/mysqlmaster
cd /usr/local/mysqlmaster
mkdir data conf

创建mysqld.cnf

打开配置文件

vim /usr/local/mysqlmaster/conf/mysqld.cnf

并添加以下内容

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
log-bin=master-bin
server-id=1

注:server-id为唯一标示,主从需开启log-bin,主要这两个参数即可,slave文件夹下配置一样需改一下server-id即可

创建容器并启动

mysql主机

docker run --name mysqlmaster -p 3306:3306 -v /usr/local/mysqlmaster/conf:/etc/mysql/mysql.conf.d -v /usr/local/mysqlmaster/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --privileged=true -d mysql:5.7

注:在启动后发现show master status未生效,并没有开启log-bin(二进制日志开启),原来是配置文件未生效,挂载配置文件路径应该是mysql.conf.d目录下,不应该挂载conf.d下,搞了一下午终于搞定,无论是增量备份还是主从复制,都是需要开启mysql-binlog日志,最好跟数据目录设置到不同的磁盘分区,可以降低io等待,提升性能;并且在磁盘故障的时候可以利用mysql-binlog恢复数据

mysql从机

docker run --name mysqlslave -p 3307:3306 -v /usr/local/mysqlslave/conf:/etc/mysql/mysql.conf.d -v /usr/local/mysqlslave/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --privileged=true -d mysql:5.7

放行端口号并重新启动firewall

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=3307/tcp --permanent
firewall-cmd --reload

开启主从复制

进入容器内部并启动mysql

docker exec -it mysqlmaster mysql -uroot -p123456

创建用户

create user  'zcj'@'%'  identified by '123456';

授权

grant replication slave on *.* to 'zcj'@'%';

刷新权限

flush privileges;

查看状态

show master status;

mysql从机

进入从器内部并登录mysql

docker exec -it mysqlslave mysql -uroot -p123456

执行主从

change master to master_host='192.168.0.103',master_port=3306,master_user='zcj',master_password='123456',master_log_file='master-bin.000002',master_log_pos=894;

注:master_host:master所在机器IP地址
master_log_file和master_log_pos通过master查看show master status查看
开启复制

start slave

注:stop slave;----停止主从
reset slave;—删除主从
查看主从是否配置成功

show slave status \G;

如果
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
说明主从成功
注:
如果是Slave_SQL_Running:no
stop slave;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
start slave;
show slave status\G
如果是slave_io_running:no
进入master,查看show master status\G ,发现和slave配置的不一致,进行修改

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值