您的位置:首页 > 数据库 > MySQL

Mysql bin-log日志和主从复制

2012-06-30 00:17 387 查看
Mysql备份和bin-log日志

备份数据:

mysqldump -uroot -pxiaobai -l -F '/tmp/test.sql'

-l 表锁

-F 即flush logs,可以重新生成新的日志文件,当然包括log-bin日志

查看binlog日志用mysql>show master status

Mysql恢复与bin-log日志

mysql -uroot -pxiaobai -v -f < /tmp/test.sql

-v 查看导入详细信息

-f 是当中间遇到错误时,可以skip过去,继续执行下面语句

mysqlbinlog --no-defaults binlog-file | mysql -uroot -pxiaobai

恢复binlog-file二进制日志文件

恢复数据

查看bin-log日志 找出位置

mysqlbinlog --no-defaults mysql-bin.000004 | more

按照位置进行恢复 

mysqlbinlog --no-defaults --stop-postion="644" mysql-bin.000004 | more -uroot -pxiaobai test

注释:

mysqlbinlog后跟的主要参数:

--stop-position="100"

--start-position="50"

--stop-date="2012-01-04 21:17:50"

--start-date="2012-01-04 19:10:10"

主服务器配置

1)登录数据库

mysql>mysql -uroot -ptest

2)给从服务器设置授权用户

mysql>grant all slave on *.* to user@192.168.10.2 identified by "pass";



mysql>grant replication slave on *.* user@192.168.10.2 identified by "pass";

3)修改主数据库服务器的配置文件my.cnf,用户binlog,并设置server-id的值

log-bin=mysql-bin

server-id=1

4)在主服务器上设置读锁定有效,确保没有数据库操作,以便获得一个一致性的快照(选作)

mysql>flush table with read lock;

5)查看主服务器上当前的二进制日志和偏移量值

show master status;

6)目前主数据哭服务器已经停止了更新操作,生成主数据库的备份,备份的方式有两种:

1)cp全部的数据

2)mysqldump备份数据方法

如果主数据库的服务可以停止,那么直接cp数据文件应该是最快的生成快照的方法:

7)主数据备份完毕后,主数据库可以恢复写操作,剩下的操作之需要在从服务器上去执行:

mysql>unlock

8)把主数据库的一致性备份恢复到从数据库上,把以上的压缩包解压后放到响应的目录即可。

Mysql从服务器配置

1)修改从数据库的server-id,注意server-id的值必须是唯一的,不能和主数据哭的配置相同,

如果有多个从服务器,每个从服务器必须有自己唯一的server-id值

连接主服务器

(1)在从服务器上的配置文件中:

server-id=2

master-host=192.168.10.1

master-user=user

master-password=pass

master-port=3306

log-bin=mysql-bin

(2)重新启动mysqld服务

service mysqld restart

pkill mysqld

/usr/local/mysql/bin/mysqld_safe --user=mysql &

(2)

mysql>show slave status \G;

如出现:

Slave_IO_Running:Yes

//此进程负责从服务器从服务器上读取binlog日志,

并写入从服务器上的日志中

Slave_SQL_Running:Yes

//此进程负责读取并且执行日志中的binlog日志

#以上两个都为yes则表明成功,只要其中一个进程的状态是no,

则表示复制进程停止,错误原因可以从"last_error"字段的值中看到

4)从数据库常用命令

(1)start slave

     启动复制进程

(2)stop slave

     停止复制进程

(3)show slave status

     查看从数据库状态

(4)show master logs

     查看主数据库bin-log日志

(5)change master to

     动态改变到主服务器的配置

(6)show processlist

    查看从数据库运行进程

Mysql 常见错误

从数据库无法同步

Show slave status显示Slave_SQL_Running为No,Seconds_Behind_Master为null

原因:

a程序可能在slave上进行了写操作

b也可能是slave机器重启后,失误回滚造成的

解决:方法一

Mysql>slave stop

Mysql>set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;

Mysql>slave start;

查看状态,然后到slave服务器上执行手动同步

mysql>change master to

master_host="192.168.10.1",

master_user="user",

master_password="pass",

master_port=3306,

master_log_file="mysql-bin.000003",

master_log_pos=98;

启动slave服务,

mysql>slave start;

通过show slave status查看Slave_SQL_Running为

Yes,Seconds_Behid_Master为0即为正常
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息