MySQL数据库主从同步的配置过程.docx

上传人:b****5 文档编号:4664175 上传时间:2022-12-07 格式:DOCX 页数:8 大小:68.11KB
下载 相关 举报
MySQL数据库主从同步的配置过程.docx_第1页
第1页 / 共8页
MySQL数据库主从同步的配置过程.docx_第2页
第2页 / 共8页
MySQL数据库主从同步的配置过程.docx_第3页
第3页 / 共8页
MySQL数据库主从同步的配置过程.docx_第4页
第4页 / 共8页
MySQL数据库主从同步的配置过程.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

MySQL数据库主从同步的配置过程.docx

《MySQL数据库主从同步的配置过程.docx》由会员分享,可在线阅读,更多相关《MySQL数据库主从同步的配置过程.docx(8页珍藏版)》请在冰豆网上搜索。

MySQL数据库主从同步的配置过程.docx

MySQL数据库主从同步的配置过程

  

 

  

MySQL数据库主从同步的配置过程

 

  

 

 

 

 

 

 

 

   

 

 

 

 

 

 

 

导读:

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。

主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。

当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最

MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。

主服务器将更新写入二进制日志文件,并维护日志文件的一个索引以跟踪日志循环。

当一个从服务器连接到主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。

从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知下一次更新。

在实际项目中,两台分布于异地的主机上安装有MySQL数据库,两台服务器互为主备,客户要求当其中一台机器出现故障时,另外一台能够接管服务器上的应用,这就需要两台数据库的数据要实时保持一致,在这里使用MySQL的同步功能实现双机的同步复制。

以下是操作实例:

1、数据库同步设置

主机操作系统:

RedHatEnterpriseLinux5

数据库版本:

MySQLVer14.12Distrib5.0.22

前提:

MySQL数据库正常启动

假设两台主机地址分别为:

ServA:

10.240.136.9

ServB:

10.240.136.149

1.1配置同步账号

在ServA上增加一个ServB可以登录的帐号:

MySQL>GRANT all privileges ON *.* TO tongbu@'10.240.136.149' IDENTIFIED BY '123456';

在ServB上增加一个ServA可以登录的帐号:

MySQL>GRANT all privileges ON *.* TO tongbu@'10.240.136.9' IDENTIFIED BY '123456';

1.2配置数据库参数

1、以root用户登录ServA,修改ServA的f文件

在[MySQLd]的配置项中增加如下配置:

1 default-character-set=utf8

3 log-bin=MySQL-bin

5 relay-log=relay-bin

7 relay-log-index=relay-bin-index

9 server-id=1

10 

11 master-host=10.240.136.149

12 

13 master-user=tongbu

14 

15 master-password=123456

16 

17 master-port=3306

18 

19 master-connect-retry=30

20 

21 binlog-do-db=umsdb

22 

23 replicate-do-db=umsdb

24 

25 replicate-ignore-table=umsdb.boco_tb_menu

26 

27 replicate-ignore-table=umsdb.boco_tb_connect_log

28 

29 replicate-ignore-table=umsdb.boco_tb_data_stat

30 

31 replicate-ignore-table=umsdb.boco_tb_log_record

32 

33 replicate-ignore-table=umsdb.boco_tb_workorder_record

2、以root用户登录ServB,修改ServB的f文件

在[MySQLd]的配置项中增加如下配置:

1 default-character-set=utf8

3 log-bin=MySQL-bin

5 relay-log=relay-bin

7 relay-log-index=relay-bin-index

9 server-id=2

10 

11 master-host=10.240.136.9

12 

13 master-user=tongbu

14 

15 master-password=123456

16 

17 master-port=3306

18 

19 master-connect-retry=30

20 

21 binlog-do-db=umsdb

22 

23 replicate-do-db=umsdb

24 

25 replicate-ignore-table=umsdb.boco_tb_menu

26 

27 replicate-ignore-table=umsdb.boco_tb_connect_log

28 

29 replicate-ignore-table=umsdb.boco_tb_data_stat

30 

31 replicate-ignore-table=umsdb.boco_tb_log_record

32 

33 replicate-ignore-table=umsdb.boco_tb_workorder_record

1.3手工执行数据库同步

假设以ServA为主服务器,在ServB上重启MySQL:

在ServB上用root用户登录MySQL,执行:

MySQL> stop slave;

MySQL> load data from master;

MySQL> start slave;

在ServA上重启MySQL:

1.4查看数据库同步状态

在MySQL命令提示符下执行:

MySQL> show slave status\G

将显示同步进程的状态,如下所示,两行蓝色字体为slave进程状态,如果都为yes表示正常;红色字体表示同步错误指示,如果有问题会有错误提示:

1 *************************** 1. row ***************************

3 Slave_IO_State:

 Waiting for master to send event

5 Master_Host:

 10.21.2.90

7 Master_User:

 tongbu

9 Master_Port:

 3306

10 

11 Connect_Retry:

 30

12 

13 Master_Log_File:

 localhost-bin.000005

14 

15 Read_Master_Log_Pos:

 39753882

16 

17 Relay_Log_File:

 localhost-relay-bin.000062

18 

19 Relay_Log_Pos:

 9826663

20 

21 Relay_Master_Log_File:

 localhost-bin.000005

22 

23 Slave_IO_Running:

 Yes

24 

25 Slave_SQL_Running:

 Yes

26 

27 Replicate_Do_DB:

 bak,umsdb

28 

29 Replicate_Ignore_DB:

30 

31 Replicate_Do_Table:

32 

33 Replicate_Ignore_Table:

 umsdb.boco_tb_connect_log,umsdb.boco_tb_menu,umsdb.boco_tb_workorder_record,

umsdb.boco_tb_data_stat,umsdb.boco_tb_log_record

34 

35 Replicate_Wild_Do_Table:

36 

37 Replicate_Wild_Ignore_Table:

38 

39 Last_Errno:

 0

40 

41 Last_Error:

42 

43 Skip_Counter:

 0

44 

45 Exec_Master_Log_Pos:

 39753882

46 

47 Relay_Log_Space:

 9826663

48 

49 Until_Condition:

 None

50 

51 Until_Log_File:

52 

53 Until_Log_Pos:

 0

54 

55 Master_SSL_Allowed:

 No

56 

57 Master_SSL_CA_File:

58 

59 Master_SSL_CA_Path:

60 

61 Master_SSL_Cert:

62 

63 Master_SSL_Cipher:

64 

65 Master_SSL_Key:

66 

67 Seconds_Behind_Master:

3、数据库同步测试

配置完数据库后进行测试,首先在网络正常情况下测试,在ServA上进行数据库操作,和在ServB上进行数据库操作,数据都能够同步过去。

拔掉ServB主机上的网线,然后在ServA上做一些数据库操作,之后再恢复ServB的网络环境,但是在ServB上却看不到同步的数据,通过命令showslavestatus\G查看发现Slave_IO_Running的状态是No,这种状态持续很长一段时间,数据才能同步到ServB上去。

这是什么问题呢?

同步延迟不会这么大吧。

后来通过网上查找相关资料,找到一个同步延迟相关的参数:

--slave-net-timeout=seconds

参数含义:

当slave从主数据库读取log数据失败后,等待多久重新建立连接并获取数据。

于是在配置文件中增加该参数,设置为60秒

重启MySQL数据库后测试,该问题解决。

4、数据库同步失效的解决

当数据同步进程失效后,首先手工检查slave主机当前备份的数据库日志文件在master主机上是否存在,在slave主机上运行:

MySQL> show slave status\G

一般获得如下的信息:

1 *************************** 1. row ***************************

3 Slave_IO_State:

 Waiting for master to send event

5 Master_Host:

 10.21.3.240

7 Master_User:

 tongbu

9 Master_Port:

 3306

10 

11 Connect_Retry:

 30

12 

13 Master_Log_File:

 MySQL-bin.000001

14 

15 Read_Master_Log_Pos:

 360

16 

17 Relay_Log_File:

 localhost-relay-bin.000003

18 

19 Relay_Log_Pos:

 497

20 

21 Relay_Master_Log_File:

 MySQL-bin.000001

22 

23 Slave_IO_Running:

 Yes

24 

25 Slave_SQL_Running:

 Yes

26 

27 Replicate_Do_DB:

 bak

28 

29 Replicate_Ignore_DB:

30 

31 Replicate_Do_Table:

32 

33 Replicate_Ignore_Table:

34 

35 Replicate_Wild_Do_Table:

36 

37 Replicate_Wild_Ignore_Table:

38 

39 Last_Errno:

 0

40 

41 Last_Error:

42 

43 Skip_Counter:

 0

44 

45 Exec_Master_Log_Pos:

 360

46 

47 Relay_Log_Space:

 497

48 

49 Until_Condition:

 None

50 

51 Until_Log_File:

52 

53 Until_Log_Pos:

 0

54 

55 Master_SSL_Allowed:

 No

56 

57 Master_SSL_CA_File:

58 

59 Master_SSL_CA_Path:

60 

61 Master_SSL_Cert:

62 

63 Master_SSL_Cipher:

64 

65 Master_SSL_Key:

66 

67 Seconds_Behind_Master:

 0

其中Master_Log_File描述的是master主机上的日志文件。

在master上检查当前的数据库列表:

得到的日志列表如下:

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

|Log_name|File_size|

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

|localhost-bin.000001|495|

|localhost-bin.000002|3394|

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

如果slave主机上使用的的Master_Log_File对应的文件在master的日志列表中存在,在slave主机上开启从属服务器线程后可以自动同步:

如果master主机上的日志文件已经不存在,则需要首先从master主机上恢复全部数据,再开启同步机制。

在slave主机上运行:

在master主机上运行:

在slave主机上运行:

MySQL> load data from master;

MySQL> reset master;

在master主机上运行:

MySQL> reset slave;

MySQL>start slave;

注意:

LOADDATAFROMMASTER目前只在所有表使用MyISAM存储引擎的数据库上有效。

 

-全文完-

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1