mysql主从同步的步骤
第一段:主机环境
主机:
从机:
第二段:创建数据库
分别登录master机和slave机的mysql:mysql –u root –p
创建数据库:create database repl;
第三段:master机和slave机的相关配置
①.、修改master机器中mysql配置文件my.cnf,该文件在/etc目录下
在[mysqld]配置段添加如下字段
server-id=1
log-bin=mysql-bin
binlog-do-db=repl //需要同步的数据库,如果没有本行,即表示同步所有的数据库
binlog-ignore-db=mysql //被忽略的数据库
在master机上为slave机添加一同步帐号
重启master机的mysql服务:service mysqld restart
用show master status 命令看日志情况
mysqlshow master status;
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
①. row in set (0.00 sec)
同样在[mysqld]字段下添加如下内容
master-user=repl
replicate-do-db=repl //同步的数据库,不写本行 表示 同步所有数据库
然后重启slave机的mysql
在slave机中进入mysql
mysqlstart slave;
mysqlshow slave status\G;
如果Slave_IO_Running、Slave_SQL_Running状态为Yes则表明设置成功.
这时 再执行show slave status\G
在IP设置完成以后,需要确定两主机的防火墙确实已经关闭.可以使用命令service iptables status查看防火墙状态.如果防火墙状态.
为仍在运行.使用service iptables stop来停用防火墙.如果想启动关闭防火墙,可以使用setup命令来禁用或定制.最终以两台主机可以相互ping通为佳.
增加一个用户同步使用的帐号:
增加一个数据库作为同步数据库:create database test;
修改配置文件:修改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'.
配置主的配置文件
vi /etc/my.cnf
创建复制用户并授权给从服务器
重启主服务器的MySQL ?/etc/init.d/mysqld restart
查看master信息: 进入MySQL ?show master status \G;
修改从库配置文件
重启从服务器MySQL,进入MySQL
指定主服务器IP等信息
启动slave ?:start slave;
查看slave状态:show slave status \G;
报错Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work
意思是主和从必须都要有不同的uuid,我们分别去查看下主从的uuid
可以看出是真的一样,原因在于 我是先安装了一个虚拟机并装好MySQL,后面有复制了一遍,作为从服务器,所以导致了这个UUID是一样的.
此时此刻呢就是解决这个UUID问题,将从库上的auto.cnf 备份下.然后重启从库.再看下从库的UUID
[auto]
再次查看从库状态
从库状态正常了
①.1.测试主从是否正常
主库上创建一个测试库,test :create database test;
创建测试表:
create table test.test(
id int,
username varchar(10)
)ENGINE='innodb'
正常,说明主从搭建成功
使用master状态
show master status; 记录file和position的值
在[mysqld]配置段添加如下字段,
连接slave,在mysql命令行执行以下命令,设置参数,启动slave
MASTER_LOG_FILE 对应master的status的file
MASTER_LOG_POS 对应master的status的position
主要查看Slave_IO_Running和Slave_SQL_Running 两列是否都为YES
主从数据库同步 可以参考如下:
第一段: 概述
第二段: 环境
设备环境:PC(或者虚拟机)两台
第三段: 配置
数据库同步复制功能的设置都在MySQL的配置文件中体现,MySQL的配置文件(一般是my.cnf):在本环境下为/etc/my.cnf.
IP的设置:
在IP设置完成以后,需要确定两主机的防火墙确实已经关闭.可以使用命令service iptables status查看防火墙状态.如果防火墙状态为仍在运行.使用service iptables stop来停用防火墙.如果想启动关闭防火墙,可以使用setup命令来禁用或定制.
最终以两台主机可以相互ping通为佳.
、增加一个用户同步使用的帐号:
、增加一个数据库作为同步数据库:
create database test;
、创建一个表结构:
、修改配置文件:
修改A的/etc/my.cnf文件,在my.cnf配置项中加入下面配置:
server-id = 1 #Server标识
binlog-do-db=test #指定需要日志的数据库
、重起数据库服务:
show variable like 'server_id';
实例:
mysql show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
| server_id | 1 |
、用show master status/G命令看日志情况.
正常为:
mysql show master status/G
*************************** 1. row ***************************
Binlog_Do_DB: test,test
Binlog_Ignore_DB:
修改B的/etc/my.cnf文件,在my.cnf配置项中加入下面配置:
master-user=backup #同步用户帐号
replicate-do-db=test #告诉slave只做backup数据库的更新
show variables like 'server_id';
、用show slave status/G命令看日志情况.
mysql show slave status/G
Slave_IO_State: Waiting for master to send event
Master_User: backup
Master_Log_File: mysqld-bin.000001
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
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
①. row in set (0.01 sec)
分别使用insert, delete , update在A主机进行增删改查数据库;查看B主机的数据库是否与A主机一致;若一致,则配置成功.
如果在A主机加入slave设置,在B主机加入master设置,则可以做B-A的同步.
、在A主机的配置文件中 mysqld配置项加入以下设置:
master-user=backup
replicate-do-db=test
master-connect-retry=10
、在B的配置文件中 mysqld配置项加入以下设置:
binlog-do-db=test
注意:当有错误产生时,*.err日志文件同步的线程退出,当纠正错误后,要让同步机制进行工作,运行slave start.
重起A、B机器,则可以实现双向的热备份.
第四段: 常见问题及解决
、Slave机器的权限问题,不但要给slave机器File权限,还要给它REPLICATION SLAVE的权限.
、在修改完Slave机器/etc/my.cnf之后,slave机器的mysql服务启动之前,记得要删除掉master.info
、在show master status或着show slave status不正常时,看看.err是怎样说的.
、启动slave,命令用start slave;重新启动用restart slave
以上就是土嘎嘎小编为大家整理的关于mysql主从怎么同步的信息相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!