日期:2014-05-16  浏览次数:20782 次

mysql 主从热备(在主从数据不一致情况下)


1.grant slave 都没有;'严重错误'
GRANT REPLICATION SLAVE ON *.* TO slave@'172.16.8.%' IDENTIFIED BY '********88';


2.锁住表,进行备份;'一定要仔细'

>flush tables with read lock;

3.本地备份:
/mysqldump -uroot -proot  --all-databases >/data/backup-all.sql

4.记录master 状态:

>show master status\G;
mysql> show master status;
+------------------+----------+----------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB   | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+----------------+------------------+-------------------+
| mysql-bin.000011 |  2253254 | juxinli_credit | mysql   

5.解除锁定;
> unlock tables;


6.将本地备份文件传递给从机;
scp backup-all.sql ubuntu@172.16.8.92:/home/ubuntu/



7.从机恢复数据库
./mysql -uroot -p < /home/ubuntu/backup-all.sql


8.从机mysql 设置
>change master to master_host='172.16.56.82',master_user='slave',master_password='*****88',master_port=3306,master_log_file='mysql-bin.000011',master_log_pos=2253254;


9.启动slave;
START SLAVE;

10.检查slave 启动状态
>show slave status\G;

报错问题诊断:
1.一定要仔细,特别第8步,master_log_file 是否正确

2.通过show slave status 确定问题原因

3,查看error.log(默认在数据库data目录下) 是很有帮助的,能够准确锁定问题原因,针对报错信息一步步修改

附上:
master 的my.cnf:
#----------------------------------------------------------
server-id=11
#log_bin=/data/mysql/mysql-bin
binlog_do_db=juxinli_credit
binlog_ignore_db=mysql
#复制的模式
#binlog_format="STATEMENT"
#binlog_format="ROW"
binlog_format="MIXED"

#----------------------------------------------------------
#结束 配置双机热备
#max_connections=16384
#日志文件配置:


#配置二进制日志文件
log_bin=/data/mysql/mysql-bin.log

#配置普通日志文件
general_log=on
general_log_file =/var/log/mysql/mysql.log

#配置错误输出日志文件/更改默认data 目录
log-error=/var/log/mysql/mysql-error.log

#配置慢查询日志文件
#slow_query_log=on??
#slow_query_log_file=/var/log/mysql/slow-query.log





slave 的my.cnf:

#1.表示打开日志;
#general_log =1

server-id=13
replicate-do-db=juxinli_credit
replicate-ignore-db=mysql
#slave-skip-erros=1062
binlog_format="MIXED"


#配置从服务器二进制日志文件
relay-log=/var/log/mysql/mysql-slave-relay-bin.log
relay-log-index=/var/log/mysql/mysql-relay-log-bin.index
(如果修改了目录,还要删除默认data 目录下的相关relay-bin.log)再重启mysql

#配置普通日志文件
general_log=on
general_log_file =/var/log/mysql/mysql.log

#配置错误输出日志文件
log-error=/var/log/mysql/mysql-error.log

#配置慢查询日志文件
slow_query_log=on??
slow_query_log_file=/var/log/mysql/slow-query.log

====================================希望对你有所帮助=====================