要实现如本文标题所说的功能,首先要求一点就是网络通畅,保证主服务器与从服务器能够正常互通。并使得ipconfig命令确定主服务器的IP地址,当前笔者的机器IP为192.168.185。其次是需要了解数据同步复制的方式为三种: SBR(基于sql语句复制),RBR(基于行的复制),MBR(混合模式复制)而且般我们所采用的是MBR混合模式复制。在主数据库配置文件中以binlog_format=MIXED体现。
为了方便大家学习,这里先给出一份简单的MySQL配置文件(my.ini)样本:
[mysql]
default-character-set=utf8
[mysqld]
port = 3306
basedir=“D:WAMPMySQL”
datadir=“D:WAMPMySQLdata”
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
99613166d466bc449ff07857eedb9f58.png
不管是主服务器还是从服务器,MySQL的初始配置文件都可以使用上述文件内容,下面我们先从主服务器的配置开始。
1、 主服务器配置
编辑主服务器my.ini文件内容,为主服务器指定一个server-id值 ;要求主服务器的server-id值 小于从服务器的server-id值。
1.1、指定主服务器Server-id值
server-id=1
1.2、指定用于实现同步功能所需要的日志文件
log_bin=“D:WAMPMySQLlogsmysql-bin.log”
这里指定了同步日志文件的位置及文件名,这个路径可根据自己的习惯进行处理,不过建议还是放到MySQL的安装目录下的logs,毕竟见名知义,为以后的管理工作提供方便。
1.3、指定需要同步的数据库
#指定名为maindb的数据库作为同步对象
binlog-do-db=maindb
1.4、指定不同步的数据库名,要指定多个数据库,可以写多行。
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
binlog-ignore-db=performance_schema
1.5、新建用于访问主服务器的用户并授权,需要在mysql>下进行。
mysql>grant replication slave on . to ‘maindb_user’@’%’ identified by ‘maindb_pass’;
mysql>flush privileges;
1.6、查看主服务器设置状态
show master status;
要查询到的结果中要特别注意File字段和Position字段,File指定了用于实现同步的日志文件名,Position指定了当前日志文件的索引。记下这个值我们将在从服务器配置时用到。本文File值为mysql-bin.000001,Position值为1。
1.7、重启主服务器服务
net stop mysql
net start mysql
至此,主服务器的配置基本完成。
2、从服务器配置
2.1、#指定从服务器的server-id值 ,必须要大于主服务器server-id值。
server-id=2
2.2、#指定用于同步的主数据库名
replicate-do-db= maindb
2.3、保存配置完之后重启一下MySQL服务
net stop mysql
net start mysql
2.4、在从服务器中配置主服务器相关信息
#修改主服务器配置
change master to master_host=‘192.168.0.185’,master_user=’ maindb_user ‘,master_password=’ maindb_pass ',master_log_file=‘mysql-bin.000001’,master_log_pos=1;
2.5、重启MySQL服务
net stop mysql
net start mysql
2.6、#启动slave服务
start slave;
2.7、#查看slave状态
show slave statusG;
结果中有两个值需要特别重要:Slave_IO_RUNNING=YES以及Slave_SQL_RUNNING=YES;只要这两个值都为YES时,恭喜你,你的主从配置成功了。
特别注意:
1、在配置MySQL的主从服务时,需要注意的一点就是在从服务器上start slave之前,需要保证主从数据库表结构及数据完全一样,否则同步不能正常执行。
2、MySQL主从数据库的同步是单向的,即只能主数据库向从数据库同步数据。不能反向,比如在从数据库中修改了表结构或表内容,其结果不会反映到主服务器数据库中。
3、从服务器停止服务后,同步一并终止,如果想恢复同步,则需要在从服务器启用MySQL服务之后,手动执行一次mysql>start slave;以保证从服务器的同步服务启动