环境说明centos7.3、MySQL5.7 前言MySQL安装参考之前的文章在centos7中安装MySQL5.7 基本概念MySQL的主从复制功能是构建大型、高性能应用程序的基础。将单个MySQL的数据分布到多个MySQL上,这种分布的机制,是通过将 MySQL主机的二进制日志(binlog)复制到其它主机( Slave )上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而另一个或多个其它服务器充当从服务器。主MySQL将更新写入binlog,从MySQL读取binlog,并且重新执行一遍,完成数据的复制。请注意,你对数据库的更新操作,都需要在主服务器上执行。 主从复制实现一、修改主(master)服务器 如果是按照我写的文章安装的MySQL,那么my.cnf配置文件在/etc/目录下。如果不在,可以通过whereis命令搜索下 在my.cnf配置文件下添加如下配置 server_id=1 #指定MySQL的idlog-bin=mysql-bin #开启二进制日志文件 二、创建复制账号 在主服务器中执行该命令(这里允许了所有的地址访问,建议设置成从服务器的地址) GRANT REPLICATION SLAVE ON *.* to 'replication'@'%' identified by 'Abc123...'; 三、修改从(slave)服务器 server_id=2log-bin=mysql-binbinlog_do_db=db_test#表示要同步的数据库 说明: binlog-ignore-db=test 表示不同步 test 数据库 binlog_do_db=db_test#表示要同步的数据库 四、重启MySQL 主服务器和从服务器都重启 service mysqld restart 五、查看主服务器状态 show master status 结果如下: 这里的信息需要记录下来,在配置从服务器时候需要用到 六、配置从服务器(连接 Master 服务器) change master to master_host='192.168.74.129',master_user='replication',master_password='Abc123...',master_log_file='mysql-bin.000001',master_log_pos=2041; master_host是主服务器的ip master_port=3306(这里没有配置,默认3306) master_user:Master 服务器授权用户,也就是 Master 前面创建的那个用户 master_password:Master 服务器授权用户对应的密码 master_log_file:Master binlog 文件名 master_log_pos:Master binlog 文件中的 Postion 值 关于position值,这里做一个说明:如果主服务器已经是有很多数据了的,那就先需要备份主服务器的数据到从服务器中,然后再使用命令show master status记录需要开始同步的位置。 七、开始复制 在从服务器中执行 start slave 停止的命令是:stop slave; 八、查看从服务器状态 show slave status\G; 结果 上图圈起来的两个结果为yes表示主从复制配置成功了。 如果配置失败,可以去MySQL的日志文件中查看失败信息,也可以通过上述命令查看一个简要的错误信息: 错误信息 这是我刚刚配置主从服务器时报的错,主要原因是MySQL服务器的server的UUID冲突了,原因是我的从服务器是从主服务器上复制过去的(VMware虚拟机拷贝)。到/var/lib/mysql/auto.cnf上修改即可。 验证主从结果现在的状态: 下面新建一个表,看看是否可以同步过去: 查看从服务器可以看到已经同步过去了同步过去。至此,MySQL的主从复制功能已经实现了 |
|