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

mysql主从检测状态命令

2014-05-21 23:16 323 查看
开启:bin-log=1,另外注意选择行,列,还是混合模式

1)salve:

[mysqld]
server-id=2
relay-log-index=slave-relay-bin.index
relay-log=slave-relay-bin

//设置哪些数据库和表需要同步,多个库和表多写几次

replicate-do-db=info
replicate-do-table=info.tb01
replicate-do-table=info.tb02

show slave status;//显示从机的状态

show relaylog events in 'anyvapedavide-relay-bin.000018'; //查看从机执行了那些语句

show processlist;//查看从机的进程

start slave;//从机开始备份

stop slave;//当更换用户,或者需要使用change master命令事应先停止

reset slave;//重置,实际操作是master.info,relay_log.info

reset slave all;//删除所有同步信息

change master to

master_host=’192.168.10.130’,

master_user=’rep1’,

master_password=’password’,

master_log_file=’mysql-bin.000005’,

master_port=3306,

master_log_pos=261;

2)master:

server-id=1   //给数据库服务的唯一标识,一般为大家设置服务器Ip的末尾号
log-bin=master-bin
log-bin-index=master-bin.index
binlog_format=ROW;//在my.ini记录日志的方式,有三种,我这里用的是row,因为row是和sql语句无关,只和数据的更改有关.


insert into mysql.user(host,user,password) values("%","rep1",password("5erte3h7je"));

flush privileges;

grant replication slave on *.* to rep1@'%' identified by '5erte3h7je';

flush tables with read lock;//当需要和slave数据同步前锁定表

unlock tables;//客户机处理完后释放表

show master status;//显示主机状态

show processlist;//显示进程信息

show binary logs ;//显示主机的logbin日志有哪些文件

show binlog events in 'ON.000002';//显示binlog中的事件

show binlog events in ' ON.000002' from 107 limit 10;//显示binlog中的事件设置读取的位置

reset master;//重置主机的binlog日志

PURGE MASTER LOGS TO ‘binary-log.xxx’;//删除所有创建时间在binary-log.xxx之前的二进制日志

3)配置参数,如果是Inodb引擎

# 若是 innodb, 且有用 transaction 的話, 需再加入下面两行

innodb_flush_log_at_trx_commit=1

sync_binlog=1

4)出现错误,停止同步时处理一

stop slave;

set global sql_slave_skip_counter=n //客户端运行,用来跳过几个事件,只有当同步进程出现错误而停止的时候才可以执行。

start slave;

备注:此方法估计会引起主从不一至,因为线程停止了

5)出现错误,停止同步时处理二

这个方法时买书看到的

STOP SLAVE SQL_THREAD;

set global sql_slave_skip_counter=n;

START SLAVE SQL_THREAD;

此方法推荐使用,在网上搜真还不一定搜得到。吐槽该死的baidu,zhengzhisi google,现在除了满天飞广告啥都没有。

申明,此吐槽和oschina无关,如有投诉我将删除上面那句

6)偶尔某些原因需要跳过一些同步语句

set sql_log_bin=0;

....//这里放自己需要执行的sql

set sql_log_bin=1;//执行完后要重启

使用这个参数是需要注意几点:

1>千万不要不假思索的加上 global 修饰符(set global sql_log_bin=0),这样会导致所有在Master数据库上执行的语句都不记录binlog,这肯定不是你想要的结果。

2>会导致Master和Slave数据库数据不一致,要谨慎操作。最好先锁住主表为只读,再操作

7)锁表注意事项:

需要注意个特点,就是 隐式提交的语句。在退出mysql终端的时候都会隐式的执行unlock tables。也就是如果要让表锁定生效就必须一直保持对话。

查看锁表的方法:

SHOW STATUS LIKE '%lock%';
SHOW OPEN TABLES;
SHOW ENGINE INNODB STATUS;

8)远程连接可能连不上:请禁用bind-address这句话

另外报错

1200 The server is not configured as slave; fix in
1201 Could not initialize master info structure;

原因可能仅仅是因为server-id=0或者1,什么原因我不清楚,直接改为或火其它数字就行了

9)主版本高,从版本低出现一异常
Slave can not handle replication events with the checksum that master is configured to log
这个错误一般出现在master5.6,slave在低版本的情况下。这是由于5.6使用了crc32做binlog的checksum。除了把master的设置从crc32改到none
binlog-checksum = none

10)彻底删除mysql

sudo apt-get autoremove --purge mysql-server-5.0
sudo apt-get remove mysql-server
sudo apt-get autoremove mysql-server
sudo apt-get remove mysql-common //这个很重要 清理残留数据

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  binlog mysql