风轻悄悄的,草软绵绵的。

mysql数据库主从服务器同步

上一篇 / 下一篇  2012-04-25 10:41:47 / 个人分类:计算机操作

  借鉴来源:

1、http://wenku.baidu.com/view/cfa3715fbe23482fb4da4c85.html?from=related&hasrec=1

2、http://wenku.baidu.com/view/6468da5cbe23482fb4da4cb3.html

3、http://hi.baidu.com/dmkj2008/blog/item/1310e2faf60c7512a8d311de.html

系统环境:Windows XP/Windows Server 2003

MYSQL版本 5.0.18

A:主服务器Master

IP地址:192.168.1.101

B:从服务器Slave

IP地址:任意IP

 配置过程

1. 在主服务器Master数据库上创建一个备份用户,命令如下:

mysql>GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.* to 'backup'@'%'IDENTIFIED BY 'backup';

从服务器Slave上做连接测试mysql -h 192.168.1.101 -u backup -p ,输入密码backup测试连接登陆)。

2. 服务器Master的配置进行修改,打开mysql安装路径下的my.ini文件,在[mysqld]下面添加如下内容:

server-id=1 #主数据库MasterID

log-bin=D:\mysqllog\log-bin.log #二进制变更日志,需在D盘县创建mysqllog文件夹

binlog-do-db= dbname #需要同步的数据库名

binlog-ignore-db=mysql, test #不需要同步的数据库名

3. 重启服务器Master的mysql服务

4. 对主服务器Master进行加锁控制(加锁后,在解锁前不要关闭该工作台),命令如下:

mysql>FLUSH TABLES WITH READ LOCK;

5. 导出主服务器Master数据库mysqldump -u root -p dbname> dump1.sql

6. 查看主服务器的状态,命令为:mysql> show master status\G,记录File  Position 项的值。

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

|  log-bin.000001  |       98 |              |                  | 

+------------------+----------+--------------+------------------+

7. 将导出的数据库文件导入到从服务Slave确保主从服务器数据库数据一样

mysql -u root -p dbname< dump1.sql

8. 服务器Slave的配置进行修改,打开mysql安装路径下的my.ini文件,在[mysqld]下面添加如下内容:

server-id=2 #从服务器Slave的ID值。注意不能和主服务器Master的ID值相同。若有多个从机,则该项的值递增,且不重复

master-host=192.168.1.101 #主服务器Master的IP地址

log-bin=D:\mysqllog\log-bin.log #二进制变更日志,需在D盘县创建mysqllog文件夹

master-user=backup #从服务器Slave连接主服务器Master的帐号

master-password=backup #从服务器Slave连接主服务器Master的帐号密码

master-port=3306 #主服务器Master端口

master-connect-retry=5 #同步时间间隔为5

replicate-do-db= dbname #需要同步的数据库

binlog-ignore-db=mysql,test #不需要同步的数据库

9. 重启从服务器Slave的Mysql服务

10. 在从服务器Slave上关闭同步线程,命令为:mysql> Stop Slave

11. 在从服务器Slave上执行下面的语句,以第六步中记录的实际值替换选项值: mysql> CHANGE MASTER TO
 MASTER_LOG_FILE='log-bin.000001',MASTER_LOG_POS=98;

注:MASTER_LOG_FILEMASTER_LOG_POS分别为步骤6所记录的FilePosition值。

12.  确认同步设置都正确后,在从服务器Slave上开启同步线程,命令为:

mysql> Start Slave

14. 在从服务器检查同步是否正常,命令为:

mysql>show slave status\G;

15. 确认一切正常后,对主服务器Master进行解锁,命令如下:

mysql> UNLOCK TABLE; 

16. 至此所有设置全部完成。更新主服务器Master中的数据,从服务器Slave中也会立刻进行同步更新。

三、 检查

检测是否同步与排错可用以下命令查看:

1、在从服务器Slave上 输入:show slave status\G

主要查看:

Slave_IO_Running: Yes 

(#注:如果这个为NO,可重新修改my.ini 中相关slave的配置信息,重新启动查看 slave的状态还是显示未修改的数据,因为第一次是读取my.ini,之后就会在mysql/下生成一个master.info 的文件,因此第二次就不会读取my.ini 的内容,而是读取master.info中的内容,为此要想使重新修改的my.ini生效的话,删除master.info文件 ,重起mysql既可解决。如果不能解决则可能是彼此之间的通讯问题或其它

Slave_SQL_Running: Yes 

(#注:如果这里为NO,很有可能是因为你的A库和B库的数据库不一致造成的。停止主从服务器MYSQL服务后删除A库中所有log-bin.log文件和B库所有的relay_log文件 并重启AB服务器即可解决)

Seconds_Behind_Master是否为0,0就是已经同步

2、在主服务器Master上输入show processlist\G

mysql> show processlist\G

*************************** 1. row ***************************
     Id: 2
   User: backup
   Host: 192.168.1.102:3341
     db: NULL
Command: Binlog Dump
   Time: 849
  State: Has sent all binlog to slave; waiting for binlog to be updated
   Info: NULL
*************************** 2. row ***************************
如果出现Command: Binlog Dump,则说明配置成功

 

 

3、若中心主服务器的IP发生变化,可以通过以下命令在从服务器段重新指定中心主服务器的IP和同步日志位置,过程如下:

1. 对主服务器Master进行加锁控制(加锁后,在解锁前不要关闭该工作台),命令如下:

mysql>FLUSH TABLES WITH READ LOCK;

2. 查看主服务器Master的最新状态,命令为:mysql> show master status\G,记录File  Position 项的值。

+------------------+----------+--------------+------------------+

| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |

|  log-bin.000007  |    23356 |              |                  | 

+------------------+----------+--------------+------------------+

注:上面的File  Position 项的值已经发生了变化。

3. 在从机停止同步线程,命令为:mysql>stop slave;

4. 在从机更改同步主机IP、日志名和更新位置,命令为:

mysql>change master to MASTER_HOST='new_ip',
MASTER_LOG_FILE='new_log_name', MASTER_LOG_POS=new_log_pos;

注:new_ip为中心主服务器新的IP地址,new_log_name为第二步中记录的File项的值,new_log_pos为第二步中记录的Position项的值

5. 6. 确认正确后,在从服务器开启同步线程,命令为:mysql> start slave; 

7. 在从服务器检查新的同步是否正常,命令为:

mysql>show slave status\G;

8. 一切正常后,对主服务器Master进行解锁,命令如下:

mysql>UNLOCK TABLE; 


TAG:

 

评分:0

我来说两句

Open Toolbar