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

如何配置两个MySQL数据库之间的主从同步功能?,第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/my.cnf文件。

在my.cnf配置项中加入下面配置:

server-id = 1 #Server标识

log-bin

binlog-do-db=test #指定需要日志的数据库

重起数据库服务:

service mysqld restart

查看server-id:

show variable like ‘server_id’。

1.主服务器:

#Master start

log-bin="d:/log/mysql/mysql_log_bin"

server-id=1

 #Master end

2.从服务器:

#Slave start

log-bin="D:/log/mysql2/log-bin.log"

relay_log="D:/log/mysql2/relay-log-bin"

#从机id,区别于主机id

server-id=2

#主机ip,供从机连接主机用

#master-host=localhost

#主机端口

#master-port=3300

#刚才为从机复制主机数据新建的账号

#master-user=slave

#刚才为从机复制主机数据新建的密码

#master-password=654321

#重试间隔时间10秒

#master-connect-retry=10

#需要同步的数据库

#replicate-do-db=test

#启用从库日志,这样可以进行链式复制

log-slave-updates

#从库是否只读,0表示可读写,1表示只读

read-only=1

#只复制某个表

#replicate-do-table=tablename

#只复制某些表(可用匹配符)

#replicate-wild-do-table=tablename%

#只复制某个库

#replicate-do-db=dbname

#不复制某个表

#replicate-ignore-table=tablename

#不复制某些表

#replicate-wild-ignore-table=tablename%

#不复制某个库

#replicate-ignore-db=dbname

#Slave end

3.对从服务器制定主服务器使用CHANGE MASTER 语句

注意:1.一定要在主服务器上创建一个可以执行replication的用户

2.该用户名在从服务器上可远程登录到主服务器。

3.开启MySQL的log-bin日志功能

先在主数据库中创建新数据库rep_test。

然后编辑主数据库的my.ini文件

在[mysqld]节点中增加如下内容:

server-id=1 #指定唯一的ID,1至32,必须的

log-bin=mysql-log-bin #指定二进制日志存放路径,必须的

binlog-do-db=rep_test #指定要同步的数据库,必须的

#binlog-ignore-db=mysql #指定不要同步的数据库,如果指定了binlog-do-db就不用再指定该项

重启主数据库,然后在主数据库中建立一个备份账户

mysql>grant replication slave on *.* to slave@192.168.1.128 identified by 'slave'

mysql>flush privileges

PS:identified by 指定的slave是账号slave@192.168.1.128 的密码

显示主服务器的状态信息,并且找到File 和 Position 的值记录下来;

mysql>show master status

在从数据库中创建新的数据库rep_test。

然后编辑从数据库的my.ini文件

在[mysqld]节点中增加如下内容:

server-id=2 #指定唯一的ID,2至32,必须的,并且不能跟主数据库一样

replicate-do-db=rep_test #指定要同步的数据库,必须的

#replicate-ignore-db=mysql #指定不要同步的数据库,

重启从数据库,设置登录主数据库的账号和密码等信息,然后启动slave

mysql>change master to master_host='192.168.1.2',master_user='slave',master_password='slave', master_log_file='mysql-bin.000002',master_log_pos=120

mysql>start slave

查看从数据库的信息

mysql>show slave status \G

如果出现: Slave_IO_Running: YesSlave_SQL_Running: Yes以上两项都为Yes,那说明没问题了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6143568.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-16
下一篇 2023-03-16

发表评论

登录后才能评论

评论列表(0条)

保存