`
weiyinchao88
  • 浏览: 1185092 次
文章分类
社区版块
存档分类
最新评论

mysql的master和slave同步(replication)

 
阅读更多
MySQL提供了数据库的同步功能,这对我们实现数据库的冗灾、备份、恢复、负载均衡等都是有极大帮助的。本文描述了常见的同步设置方法。

一、准备服务器

由于MySQL不同版本之间的(二进制日志)binlog格式可能会不一样,因此最好的搭配组合是Master的MySQL版本和Slave的版本相同或者更低,Master的版本肯定不能高于Slave版本。

本文中,我们假设主服务器(以下简称Master)和从服务器(以下简称Slave)的版本都是5.0.15,操作系统是LinuxUbuntu5.0.x。

假设同步Master的主机名为:rep1,Slave主机名为:rep2,2个MySQL的basedir目录都是/usr/local/mysql,datadir都是:/usr/local/mysql/data。

二、设置同步服务器

1、设置同步Master

每个同步服务器都必须设定一个唯一的编号,否则同步就不能正常运行了。接下来开始修改my.cnf,增加以下几行:

server-id=1
log-bin
set-variable=binlog-ignore-db=mysql
然后在Master上增加一个账号专门用于同步,如下:

mysql>GRANTREPLICATIONSLAVEON*.*TOrep@rep2IDENTIFIEDBY'rep';
如果想要在Slave上有权限执行"LOADTABLEFROMMASTER"或"LOADDATAFROMMASTER"语句的话,必须授予全局的FILE和Select权限:

mysql>GRANTFILE,Select,REPLICATIONSLAVEON*.*TOrep@rep2IDENTIFIEDBY'rep';
第三行表示不记录数据库mysql的更新日志,这就避免了Master上的权限设置等被同步到Slave上,如果对这方面没有限制,就可以不设置这个参数。

接下来备份Master上的数据,首先执行如下SQL语句:

mysql>FLUSHTABLESWITHREADLOCK;
不要退出这个终端,否则这个锁就不生效了;接着导出数据,可以直接打包压缩数据文件,也可以使用mysqldump工具来做,推荐前者的方法,这样更为快捷简便。

root$cd/usr/local/mysql
root$tarzcfdata.tar.gz./data(在这里也可能是"var"等其它实际存放数据文件的目录,根据实情而定)
然后将这些数据拷贝到Slave服务器上,解开,设置好正确的权限及属主等;之后,执行"UNLOCKTABLES"语句来释放锁。

2、设置Slave

修改my.cnf,增加如下几行:

server-id=2
master-host=rep1#主服务器名
master-user=rep#同步账户名,默认是test
master-password=rep#同步帐户密码,默认是空
master-port=3306#主服务器的TCP/IP端口号,默认是3306
set-variable=replicate-ignore-db=mysql#略过同步的数据库名,如果有多个,请设置多次
set-variable=replicate-do-db=yejr#想要同步的数据库名,如果有多个,请设置多次
接下来在Slave上检验一下是否能正确连接到Master上,并且具备相应的权限。

root$mysql-hrep1-urep-prep
mysql>SHOWGRANTS;
+------------------------------------------------------------------------------+
|Grantsforrep@rep2|
+------------------------------------------------------------------------------+
|GRANTSelect,FILE,REPLICATIONSLAVEON*.*TO'rep'@'rep2'IDENTIFIEDBY
PASSWORD'*9FF2C222F44C7BBA5CC7E3BE8573AA4E1776278C'|
+------------------------------------------------------------------------------+
现在,可以启动Slave了。启动成功后,登录Slave,查看一下同步状态:

mysql-hlocalhost-uroot
mysql>SHOWSLAVESTATUS/G
***************************1.row***************************
Slave_IO_State:Waitingformastertosendevent
Master_Host:rep1
Master_User:rep
Master_Port:3306
Connect_Retry:60
Master_Log_File:binlog.000001
Read_Master_Log_Pos:98
Relay_Log_File:relay.000003
Relay_Log_Pos:232
Relay_Master_Log_File:binlog.000001
Slave_IO_Running:Yes
Slave_SQL_Running:Yes
Replicate_Do_DB:
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:232
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
1rowinset(0.00sec)
可以看到,Slave_IO_Running和Slave_SQL_Running两列的值都为"Yes",这表明Slave的I/O和SQL线程都在正常运行。

至此,同步设定成功。

三、同步设定FAQ

请查看:http://www.planev.net/article.asp?id=394
分享到:
评论

相关推荐

    mysql master/slave介绍及配置

    Master-Slave的数据库机构解决了很多问题,特别是read/write比较高的web2.0应用: 1、写操作全部在Master结点执行,并由Slave数据库结点定时(默认60s)读取Master的bin-log 2、将众多的用户读请求分散到更多的...

    mysql5.5 master-slave(Replication)配置方法

    mysql5.5 master-slave(Replication)配置方法,需要的朋友可以参考下。

    mysql5.5 master-slave(Replication)主从配置

    一主一从: Master: OS:centos release 5.6 DB:mysql 5.5.8 IP:192.168.1.2 Slave: OS:centos release 5.6 DB:mysql 5.5.8 IP:192.168.1.3 修改主机Master配置文件 (/etc/my.cnf) 代码如下: [mysqld] //至少要有...

    MySQL-Master_Slave_repl.txt

    mysql> grant replication slave on *.* to 'sree'@'%'   Refresh permissions mysql> flush privileges mysql> show master status; | File | Position | master-bin.000004 | 120   Slave configuration =...

    master and slave have equal MySQL server ids

    代码如下:Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-...

    master and slave have equal MySQL server UUIDs 解决方法

    使用rsync配置了大量mysql,省去了大量编译和配置的时间,随逐个修改master和slave服务器的my.cnf,后,发现数据不能同步,在slave服务器show slave status: Fatal error: The slave I/O thread stops because ...

    mysql读写分离实现.doc

    database集群采用mysql的master-slave的replication方案。 适合人群:对mysql有一定基础的朋友 使用场景及目标:当数据库访问并发量非常大,性能急剧下降时,先进行读写分离。通过本次案例实战,掌握mysql读写分离的...

    mysql5.7 主从配置docker配置文件

    记录file和pos,用在slave中的master_log_file和master_log_pos中。 在slave中执行: change master to master_host='192.168.1.147',master_user='user1',master_password='1',master_port=3336,master_log_...

    Mysql主从同步备份策略

    Mysql主从同步备份策略 五月 18th, 2009 at 17:30 - 3,803 views 环境: 主从服务器上的MySQL数据库版本同为5.1.34 主机IP:192.168.0.1 从机IP:192.168.0.2 一. MySQL主服务器配置 1.编辑配置文件/etc/my.cnf # ...

    MySQL5.6同步白皮书

    on how to install and configure a master/slave topology, as well as handle failover events . It demonstrates how to do this using Global Transaction Identifiers (GTIDs) as well as the extra steps ...

    mysql读写分离实现

    在本次实战中,应用程序client基于c3p0连接后端的database proxy。database proxy负责管理client实际访问database的路由策略,采用开源框架amoeba。database集群采用mysql的master-slave的replication方案。

    mysql镜像备份mysql镜像备份

    mysql建立镜像数据库- - Tag: mysql建立镜像数据库 ...grant replication slave,reload,super on *.* to 'slave_user'@'host' identified by 'slave_pass' 也可以用load data from master命令,建立从数据库。

    mysql主从同步配置.docx

    mysql主从同步配置,要实现 MySQL 的 Replication ,首先必须打开 Master 端的Binary log(mysql-bin.xxxxxx)功能,否则无法实现。因为整个复制过程实际上就是Slave从Master端获取该日志然后再在自己身上完全按顺序的...

    mysql binlog日志恢复【亲测有效,有例子实测】

    二进制日志(binnary log)以事件形式记录了...主从复制:mysql replication在master端开启binlog,master把它的二进制日志传递给slaves来达到master-slave数据一致的目的。 数据恢复:通过mysqlbinlog工具来恢复数据。

    MySQL主从同步原理介绍

    Mysql的Replication(复制)是一个异步的复制过程,从一个 Mysql instance(我们称之为 Master)复制到另一个Mysql instance(我们称之 Slave)。在 Master 与 Slave之间的实现整个复制过程主要由三个线程来完成,其中两个...

    MySQL的Replication配置方案.doc

    1.Replication可以实现数据将一台主服务器的数据复制到多台从服务器的操作 2.默认情况下,属于异步复制...4.将master数据库的改变写入二进制日志(binlog),slave同步这些二进制日志,根据中继日志来进行相应操作

    mysql-8-cookbook2018

    to chain replication and switching a slave from chain replication to master-slave is something that will interest the readers. Chapter 10, Table Maintenance, covers cloning tables. Managing big tables...

    MySQL-group-replication 配置步骤(推荐)

    它在master-slave 之间实现了强一致性, 但是就目前来说主要是性能不太好。 【1】确定当前的mysql数据库版本为5.7.17及以上 /usr/local/mysql/bin/mysqld --version /usr/local/mysql/bin/mysqld Ver 5.7.17 for ...

Global site tag (gtag.js) - Google Analytics