mysql 主从备份_mysql主从备份

log-bin=mysql-bin

server-id = 1

binlog-do-db=test

binlog-ignore-db=mysql

重启MySQL,创建一个MySQL帐号为同步专用

GRANT REPLICATION SLAVE,RELOAD,SUPER, ON *.* TO backup@192.168.0.2 IDENTIFIED BY 'slavepass';

FLUSH PRIVILEGES ;

复制数据库:

FLUSH TABLES WITH READ LOCK;

锁定表清除写入操作。

SHOW MASTER STATUS;

File列显示日志名,而Position显示偏移量,记录备用。

备份数据库,建议对于MYI存储的MYSQL采用直接文件复制,效率会好很多。备份完解锁。

UNLOCK TABLES;

备份后对于从服务器导入数据库

以上复制过程也可以用mysqldump,如果数据库在提供服务,必须加入--lock-all-tables以保证数据为同一时间的。加入--master-data=1在dump时会记录binlog名称和偏移值,以CHANGE MASTER TO形式存在文件中,这样导入slave后不用自己设置master的binlog文件和偏移值了。

2、设置同步Slave

修改my.cnf文件,添加

server-id = 2

master-host = 192.168.0.1

master-user = backup

master-password = slavepass

master-port = 3306

replicate-ignore-db=mysql

replicate-do-db=test

server-id不能与master相同

重启MySQL

3、启动同步

在主服务器A MySQL命令符下:

show master status;

显示(当然这个是我机器的情况,你的不可能跟我一样哈,只是个例子):

+------------------+----------+-------------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+-------------------+------------------+

| mysql-bin.000028 | 313361 | test | mysql |

+------------------+----------+-------------------+------------------+

在从服务器B MySQL命令符下:

slave stop;

MySQL> CHANGE MASTER TO

-> MASTER_HOST='master_host_name',

-> MASTER_USER='replication_user_name',

-> MASTER_PASSWORD='replication_password',

-> MASTER_LOG_FILE='recorded_log_file_name',

-> MASTER_LOG_POS=recorded_log_position;

slave start;

用show slave status;看一下从服务器的同步情况

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

如果都是yes,那代表已经在同步

往表里面写点数据测试一下看是否同步成功,如果不成功,绝对不是你的RP问题,再检查一下操作步骤!

4、设置双向同步

其实也就是A->B单向同步的反向操作!双向同步,就这么简单啦!

三、同步错误处理

发现mysql slave服务器经常因为一些特殊字符或者符号产生的更新语句报错,整个同步也会因此而卡在那,最初的办法只是手动去出错的机器,执行下面三条sql语句,跳过错误即可。

slave stop;

set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

slave start;

四、备份底层知识

1、binlog

mysql的binlog记录了数据库的所有操作,比如我有个新的数据库bbs,建立数据库时候也开启了binlog,那么mysql会在var目录生成个mysql-bin.000001,这个文件记录了对数据库bbs的所有操作sql命令。每个binlog文件默认1G,超过了会自动换到mysql-bin.000002。mysql-bin.index记录了所有mysql-bin的名字。

mysql-bin.index示例:

./mysql-bin.000001

./mysql-bin.000002

./mysql-bin.000003

./mysql-bin.000004

./mysql-bin.000005

./mysql-bin.000006

./mysql-bin.000007

./mysql-bin.000008

./mysql-bin.000009

./mysql-bin.000010

数据主从备份其实就是master把binlog发给slave,然后slave在本地执行这些sql语句。

2、master.info

master.info文件存在于slave的var目录,记录了master的信息。

master.info示例:

15

mysql-bin.000105 #master的binlog文件

498027148 #偏移值

192.168.0.1

backup

slavepass

3306

60

0

0

3、relay-log.info

relay-log.info文件存在于slave的var目录,记录了slave执行binlog文件情况的信息。

relay-log.info示例:

./lab-relay-bin.000050 #slave存放master的binlog的文件

210263408 #slave偏移值

mysql-bin.000105

498027148

2

从master的mysql-bin.000105发送信息写到lab-relay-bin.000050里,slave再从lab-relay-bin.000050取sql语句执行。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2009-10-06 02:54

浏览 2267

论坛回复 / 浏览 (0 / 8750)

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值