基于Docker的MySQL主从复制搭建及道理
施行apt-get update
,然后再次施行apt-get install vim
即可成功安装vim。然后我们就可以运用vim编纂my.cnf,在my.cnf中增加如下配置:
[mysqld] ## 统一局域网内注意要独一 server-id=100 ## 开启二进制日志功能,可以随意取(关键) log-bin=mysql-bin
配置完成之后,需要重新启动mysql办事使配置生效。运用service mysql restart
完成重新启动。重新启动mysql办事时会使得docker容器休止,我们还需要docker start mysql-master
启动容器。
下一步在Master数据库新建数据同步会员,授予会员 slave REPLICATION SLAVE
权限和REPLICATION CLIENT
权限,用于在主从库之间同步数据。
第一连贯mysql数据库root@5ddad8c2f368:/# mysql -uroot -p123456
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
授予复制账号
REPLICATION CLIENT
权限,复制会员可以运用SHOW MASTER STATUS, SHOW SLAVE STATUS
和SHOW BINARY LOGS
来肯定复制状态。
授予复制账号REPLICATION SLAVE
权限,复制才干真正地工作。
配置Slave(从)
和配置Master(主)同样,在Slave配置文件my.cnf中增加如下配置:
[mysqld] ## 设定server_id,注意要独一 server-id=101 ## 开启二进制日志功能,以备Slave作为其它Slave的Master时运用 log-bin=mysql-slave-bin ## relay_log配置中继日志 relay_log=edu-mysql-relay-bin
配置完成后也需要重新启动mysql办事和docker容器,操纵和配置Master(主)一致。
relay log许多方面都跟binary log差未几。区别是:从办事器I/O线程将主办事器的二进制日志读取过来记载到从办事器当地文件,然后SQL线程会读取relay-log日志的内容并利用到从办事器,从而使从办事器和主办事器的数据维持一致。
在Slave 中进入 mysql,施行
CHANGE MASTER TO master_host = '172.17.0.2', master_user = 'slave', master_password = '123456', master_port = 3306, master_log_file = 'mysql-bin.000001', master_log_pos = 617, master_connect_retry = 30;
下令注明:
master_host :Master的地址,指的是容器的独立ip,可以通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id查询容器的ip
一个事务日志同步的完备历程是这样的:
- 1、在备库B上通过
change master
下令,设定主库A的IP、端口、会员名、密码、以及要从哪个位置开端要求binlog,这个位置包括文件名和日志偏移量。 - 2、在备库B上施行
start slave
下令,这时侯备库会启动两个线程,io_thread 和 sql_thread。其中, io_thread负责与主库创立连贯。 - 3、主库A校验完会员名、密码后,开端按照备库B传过来的位置,从当地读取binlog,发给B。
- 4、备库B拿到binlog后,写到当地文件,称为中转日志(relay log)。
- 5、sql_thread读取中转日志,解析日志里的下令,并施行。
以上就是基于Docker的MySQL主从复制搭建及道理的细致内容,更多请关注 百分百源码网 其它相干文章!