数据库主从同步

要实现如本文标题所说的功能,首先要求一点就是网络通畅,保证主服务器与从服务器能够正常互通。并使得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;以保证从服务器的同步服务启动

你可能感兴趣的:(数据库,服务器,mysql)