那些年的记忆

习惯改变行为,行为决定命运。

MySQL5.5 REPLICATION主从同步(Debian 7)

1. 主服务器配置

master

vi /etc/mysql/my.cnf            //修改my.cnf配置文件

server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log//BinLog路径
expire_logs_days        = 10
max_binlog_size         = 100M
binlog_do_db            = StyleBase                //记入log的库(需要同步的库)
binlog_do_db            = UserBase
binlog_ignore_db        = mysql                    //不记入log的库

添加单独的同步用户

mysql> GRANT REPLICATION SLAVE ON *.* TO 'sync_user'@'192.168.0.52' IDENTIFIED BY 'ibinfen';
mysql> FLUSH PRIVILEGES;

重启MySQL服务

/etc/init.d/mysql restart

查看Master状态

mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 |     107  | UserBase     | mysql            |  //从库上会用到
+------------------+----------+--------------+------------------+

2. 从服务器配置

slave 

vi /etc/mysql/my.cnf                               //修改my.cnf配置文件

server-id               = 2                        //唯一标示
expire_logs_days        = 10
max_binlog_size         = 100M
#replicate-do-db = CategoryBase                    //再次添加新库到同步时,同步出错,没有错误信息。暂时使用同步表的方式解决(如下)
replicate-do-table = UserBase.tab_user             //只同步UserBase.tab_user表
replicate-rewrite-db = StyleBase->BIBase           //这里同步StyleBase库到BIBase库
replicate-do-table = BIBase.tab_activity           //同步到BIBase.tab_activity
replicate-do-table = CategoryBase.tab_major
replicate-do-table = CategoryBase.tab_mino
replicate-ignore-db = mysql                //不同步的库

重启MySQL服务

/etc/init.d/mysql restart

CHANGE MASTER

mysql> CHANGE MASTER TO MASTER_HOST = '192.168.0.52',MASTER_USER = 'sync_user',MASTER_PASSWORD = 'ibinfen',MASTER_LOG_FILE = 'mysql-bin.000001',MASTER_LOG_POS = 107;

启动slave

mysql> START SLAVE;

查看slave状态

mysql> SHOW SLAVE STATUS\G;

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

Seconds_Behind_Master: 0//延迟

其他

锁定表(全局读锁定):

FLUSH TABLES WITH READ LOCK;

解锁:

UNLOCK TABLES;


Q&A:

1. ERROR 1129 (HY000): Host '192.168.0.54' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

答:原因 同一个ip在短时间内产生太多中断的数据库连接(超过mysql数据库max_connection_errors的最大值)而导致的阻塞;

方法1. 在MASTER 数据库中:

mysql> flush hosts;

方法2. 直接重启MASTER数据库;


发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。