1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 两个mysql主从同步_如何配置两个MySQL数据库之间的主从同步功能

两个mysql主从同步_如何配置两个MySQL数据库之间的主从同步功能

时间:2021-08-29 00:20:56

相关推荐

两个mysql主从同步_如何配置两个MySQL数据库之间的主从同步功能

匿名用户

1级

-02-29 回答

一、 概述 MySQL从3.23.15版本以后提供数据库复制(replication)功能,利用该功能可以实现两个数据库同步、主从模式、互相备份模式的功能。本文档主要阐述了如何在linux系统中利用mysql的replication进行双机热备的配置。 二、 环境 操作系统:Linux 2.6.23.1-42.fc8 # SMP(不安装XEN) Mysql版本:5.0.45-4.fc8 设备环境:PC(或者虚拟机)两台 三、 配置 数据库同步复制功能的设置都在MySQL的配置文件中体现,MySQL的配置文件(一般是f):在本环境下为/etc/f。 3.1 设置环境: IP的设置: A主机 IP:10.10.0.119 Mask:255.255.0.0 B主机 IP:10.10.8.112 Mask:255.255.0.0 在IP设置完成以后,需要确定两主机的防火墙确实已经关闭。可以使用命令service iptables status查看防火墙状态。如果防火墙状态 为仍在运行。使用service iptables stop来停用防火墙。如果想启动关闭防火墙,可以使用setup命令来禁用或定制。 最终以两台主机可以相互ping通为佳。 3.2 配置A主(master) B从(slave)模式 3.2.1 配置A 为master 、增加一个用户同步使用的帐号: GRANT FILE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’; GRANTREPLICATION SLAVE ON *.* TO ‘backup’@'10.10.8.112' IDENTIFIED BY ‘1234’; 赋予10.10.8.112也就是Slave机器有File权限,只赋予Slave机器有File权限还不行,还要给它REPLICATION SLAVE的权限才可以。 、增加一个数据库作为同步数据库: create database test; 、创建一个表结构: create table mytest (username varchar(20),password varchar(20)); 、修改配置文件: 修改A的/etc/f文件,在f配置项中加入下面配置: server-id = 1 #Server标识 log-bin binlog-do-db=test #指定需要日志的数据库 、重起数据库服务: service mysqld restart 查看server-id: show variable like ‘server_id’; 实例: mysql> show variables like 'server_id'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | server_id | 1 | +---------------+-------+ 1 row in set (0.00 sec) 、用show master status/G命令看日志情况。 正常为: mysql> show master status/G *************************** 1. row *************************** File: mysqld-bin.000002 Position: 198 Binlog_Do_DB: test,test Binlog_Ignore_DB: 1 row in set (0.08 sec) 3.2.2 配置B 为slave 、增加一个数据库作为同步数据库: create database test; 、创建一个表结构: create table mytest (username varchar(20),password varchar(20)); 、修改配置文件: 修改B的/etc/f文件,在f配置项中加入下面配置: server-id=2 master-host=10.10. 0.119 master-user=backup #同步用户帐号 master-password=1234 master-port=3306 master-connect-retry=60 #预设重试间隔秒 replicate-do-db=test #告诉slave只做backup数据库的更新 、重起数据库服务: service mysqld restart 查看server-id: show variables like ‘server_id’; 实例: mysql> show variables like 'server_id'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | server_id | 2 | +---------------+-------+ 1 row in set (0.00 sec) 、用show slave status/G命令看日志情况。 正常为: mysql> show slave status/G *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 10.10.0.119 Master_User: backup Master_Port: 3306 Connect_Retry: 60 Master_Log_File: mysqld-bin.000001 Read_Master_Log_Pos: 98 Relay_Log_File: mysqld-relay-bin.000003 Relay_Log_Pos: 236 Relay_Master_Log_File: mysqld-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: test,test Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 98 Relay_Log_Space: 236 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 1 row in set (0.01 sec) 3.2.3 验证配置 分别使用insert, delete , update在A主机进行增删改查数据库;查看B主机的数据库是否与A主机一致;若一致,则配置成功。 3.3双机互备模式 如果在A主机加入slave设置,在B主机加入master设置,则可以做B->A的同步。 、在A主机的配置文件中 mysqld配置项加入以下设置: master-host=10.10.8.112 master-user=backup master-password=1234 replicate-do-db=test master-connect-retry=10 、在B的配置文件中 mysqld配置项加入以下设置: log-bin binlog-do-db=test 注意:当有错误产生时,*.err日志文件同步的线程退出,当纠正错误后,要让同步机制进行工作,运行slave start。 重起A、B机器,则可以实现双向的热备份。 四、 常见问题及解决 、Slave机器的权限问题,不但要给slave机器File权限,还要给它REPLICATION SLAVE的权限。 、在修改完Slave机器/etc/f之后,slave机器的mysql服务启动之前,记得要删除掉master.info 、在show master status或着show slave status不正常时,看看.err是怎样说的。 、Slave上Mysql的Replication工作有两个线程, I/O thread和SQL thread。I/O的作用是从 master 3306端口上把它的binlog取过来(master在被修改了任何内容之后,就会把修改了什么写到自己的binlog等待slave更 新),然后写到本地的relay-log,而SQL thread则是去读本地的relay-log,再把它转换成本Mysql所能理解的语句,于是同步 就这样一步一步的完成.决定I/O thread的是/var/lib/mysql/master.info,而决定SQL thread的是/var /lib/mysql/relay-log.info. 、启动slave,命令用start slave;重新启动用restart slave

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。