Mysql bin-log日志和主从复制

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 [email protected] identified by "pass";

mysql>grant replication slave on *.* [email protected] 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即为正常

你可能感兴趣的:(Mysql bin-log日志和主从复制)