MySQL配置主机到从机复制_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2281 | 回复: 0   主题: MySQL配置主机到从机复制        下一篇 
johnnyfox
注册用户
等级:新兵
经验:41
发帖:90
精华:0
注册:2011-12-12
状态:离线
发送短消息息给johnnyfox 加好友    发送短消息息给johnnyfox 发消息
发表于: IP:您无权察看 2014-11-25 10:25:33 | [全部帖] [楼主帖] 楼主

Mysql主从复制是一台服务器充当主服务器,另一台或多台服务器充当从服务器,主机自动复制到从机。对于多级复制,数据服务器即可充当主机,也可充当从机。 Mysql复制的基础是主服务器对数据库修改记录二进制日志 binlog,从服务器通过主服务器的 binlog自动执

Mysql主从复制是一台服务器充当主服务器,另一台或多台服务器充当从服务器,主机自动复制到从机。对于多级复制,数据服务器即可充当主机,也可充当从机。 Mysql复制的基础是主服务器对数据库修改记录二进制日志 binlog,从服务器通过主服务器的 binlog自动执行更新。

下面以 InnoDB 引擎为例,说明配置主从复制的方法。

1 配置 /etc/my.cnf

修改主服务器 my.cnf,在 [mysqld]中增加如下内容:

## 打开 binlog
log-bin=mysql-bin
## 服务器 ID 。服务器之间不能有重复 ID ,一般主是 1
server-id       = 1
## 指定不写 binlog 的数据库,不同步系统库
binlog-ignore-db = mysql
binlog-ignore-db = information_schema
binlog-ignore-db = cluster
## 指定写二进制的数据库,多个要多行
replicate-do-db = DB_Test
## 指定跨库更新也同步的数据库。和 replicate-do-db 相同多行
replicate-wild-do-table=DB\_Test.%


修改从服务器 my.cnf,设置 server-id=2。

另外,主从服务器的 ip和端口信息配置不在 my.cnf里配置,整合到后面的 change master命令里。

修改了 my.cnf,重启主从服务器:

mysqladmin -uroot shutdown


2 主服务器上添加数据库复制用户

在主服务器上,必须为从服务器创建主从复制的用户 ,并设置 replication slave权限。所用具体命令如下:

grant replication slave on *.* to rep@'172.25.38.145' identified by '';
flush privileges;


172.25.38.145是从服务器,就通过 rep用户密码为空来同步复制。通过查询 user表查看 Repl_slave_priv的值为 Y:

select * from mysql.user where user='rep'\G;


3 导出主服务器数据

主服务器上要保证数据一致性,获取数据快照。在获取快照后,主服务器不能有写操作。

先刷新所有语句并阻止写入 ,这样的目的是保证主机数据快照的一致性:

FLUSH TABLES WITH READ LOCK;


执行完这句后,所有对主服务器数据库的更新都被挂起,直到执行 UNLOCK TABLES;或者关闭当前的终端。

获取主服务器的快照 :

show master status\G;


记录 File 及 Position 项的值,以便之后对从服务器进行配置。 File是当前处理的 binlog, Position是处理的 binlog位置,这是从服务器的同步起点。

接下来是导出主服务器的数据。导出数据有两种方式: mysqldump导出需要同步的数据库和拷贝数据库数据目录。

1) mysqldump 方式备份数据

Mysqldump适合数据库还不是特别大的情况。

导出主服务器需要同步的数据库数据,在另一个终端上执行命令:

mysqldump -uroot DB_Test1 DB_Test2 –opt –single-transaction –flush-logs –routines –force –database > master.sql


导出数据后就可以解锁了:

UNLOCK TABLES;


2) 拷贝文件方式备份数据

拷贝文件是主服务器上的数据文件目录打包到从服务器上。

拷贝文件的方式需要关闭数据,比较适合数据库庞大 mysqldump比较慢的场合。注意 : binlog可能非常庞大,影响文件备份速度。可以定期移走不用的 binlog,通过 show slave status查看当前的 binlog,移走这以前的 binlog。
对于 MyISAM引擎,可以在不关闭数据库的情况下直接 tar,但对于 InnoDB事务型数据库,就麻烦一些了。商业软件 InnoDB Hot Backup提供了在线备份工具,除了这个收费的工具,最简单的办法就是关闭主服务器后执行 tar。

--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论