(本文的两个mysql数据库均在单机配置)html
若是是在centos 上使用docker上线mysql主从,参考这篇文章:http://www.javashuo.com/article/p-solfkode-z.htmlmysql
1. 首先准备两个mysql服务端文件,目录分别为:sql
D:\software\mysql-5.7.26-winx64-master D:\software\mysql-5.7.26-winx64-slave
2. 配置master的my.ini文件(若是没有则新建):docker
[mysqld] port = 3306 basedir = D:\\software\\mysql-5.7.26-winx64-master datadir = D:\\software\\mysql-5.7.26-winx64-master\\data #生成记录文件位置,同步必须,请勿手动删除,格式位置为 :log-bin=mysql安装路径/log/mysql-bin.log log-bin=D:\\software\\mysql-5.7.26-winx64-master\\log\\bin-log #服务ID,用于区分服务,范围1~2^32-1,须要与从服务器不一样 server_id= 1 #MySQL 磁盘写入策略以及数据安全性 #每次事务提交时MySQL都会把log buffer的数据写入log file,而且flush(刷到磁盘)中去 innodb_flush_log_at_trx_commit=1 #当sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。 #sync_binlog 的默认值是0,像操做系统刷其余文件的机制同样,MySQL不会同步到磁盘中去而是依赖操做系统来刷新binary log。 sync_binlog= 1 #此处添加须要同步的数据库名称,那么它会只接收这个数据库的信息,多个数据库需同步按照此格式另写几行便可 #这里同步数据有两种思路,一种是主服务器只发从库须要的,在主库指定;一种是主服务器把全部数据同步过来,从库按需过滤接收 #为了让配置更详细些,此处配置了从库过滤接收的配置 binlog-do-db=test #mysql复制模式,三种:SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制) #混合模式复制 binlog_format=MIXED #binlog过时清理时间 expire_logs_days=7 #binlog每一个日志文件大小 max_binlog_size=20M
3. 配置slave的my.ini文件:数据库
[mysqld] port = 3306 basedir = D:\\software\\mysql-5.7.26-winx64-slave datadir = D:\\software\\mysql-5.7.26-winx64-slave\\data #生成记录文件位置,同步必须,请勿手动删除,格式位置为 :log-bin=mysql安装路径/log/mysql-bin.log log-bin=D:\\software\\mysql-5.7.26-winx64-slave\\log\\bin-log #服务ID,用于区分服务,范围1~2^32-1,须要与从服务器不一样 server_id= 2 #MySQL 磁盘写入策略以及数据安全性 #每次事务提交时MySQL都会把log buffer的数据写入log file,而且flush(刷到磁盘)中去 innodb_flush_log_at_trx_commit=1 #当sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。 #sync_binlog 的默认值是0,像操做系统刷其余文件的机制同样,MySQL不会同步到磁盘中去而是依赖操做系统来刷新binary log。 sync_binlog= 1 #此处添加须要同步的数据库名称,那么它会只接收这个数据库的信息,多个数据库需同步按照此格式另写几行便可 #这里同步数据有两种思路,一种是主服务器只发从库须要的,在主库指定;一种是主服务器把全部数据同步过来,从库按需过滤接收 #为了让配置更详细些,此处配置了从库过滤接收的配置 replicate-do-db=test #mysql复制模式,三种:SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制) #混合模式复制 binlog_format=MIXED #binlog过时清理时间 expire_logs_days=7 #binlog每一个日志文件大小 max_binlog_size=20M
注:二者的区别之处主要在于:centos
4. 建立服务(同时指定使用本身的my.ini文件):安全
5. 启动服务:服务器
分别启动主从数据库服务:net start MySQL_M、net start MySQL_Sasync
6. 默认密码为空,能够从cmd登陆mysql后修改(mysql -uroot -p),也能够经过navicat登陆后修改:ide
修改语句为:set password = password('123456'); flush privileges;
7. 在主库建立并受权新帐号,用于从库使用该帐号拉取binlog(示例建立的user=slave,password=123456):
grant replication slave, replication client on *.* to slave@'192.168.1.128' identified by "123456"; flush privileges;
8. 在从库执行命令,指定主库信息:
CHANGE MASTER TO MASTER_HOST='127.0.0.1', MASTER_USER='slave', MASTER_PASSWORD='123456', MASTER_LOG_FILE='bin-log.000002', MASTER_LOG_POS=1392;
其中MASTER_LOG_FILE和MASTER_LOG_POS的值来源于主库中执行的“show master status”命令的结果:(必定是要在主库中执行)
执行完以后,在从库执行“show master status”命令,若是结果中的 Slave_IO_Running: Yes 且 Slave_SQL_Running: Yes,则表明主从配置已经成功!!
不然,若是其中任一一个为No,则未成功,能够参考这篇文章的解决方案:https://blog.csdn.net/heng_ji/article/details/51013710
主从同步原理,能够参考这篇文章:http://www.javashuo.com/article/p-ullujmvv-gb.html
至此,mysql主从同步配置就所有完成!!