MySQL从库搭建步骤

来源:互联网 发布:linux 重启后不能远程 编辑:程序博客网 时间:2024/05/19 02:02

1. 创建复制账户

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO repl@'192.168.0.%' IDENTIFIED BY 'p4ssword';


2. 打开主库binlog日志

log_bin = mysql-bin

server_id = 10

如果之前没有在MySQL的配置文件中log-bin选项,就需要重新启动MySQL, 使用SHOW MASTER STATUS命令,检查状态


3. 备库上的配置

log_bin = mysql-bin

server_id = 2

relay_log = /var/lib/mysql/mysql-relay-bin

log_slave_updates = 1

expire_logs_days =30

#readonly = 1


4. 启动复制

CHANGE MASTER TO MASTER_HOST='server1',

MASTER_USER='repl',

MASTER_PASSWORD='p4ssword',

MASTER_LOG_FILE='mysql-bin.0000001',

MASTER_LOG_POS=0;


SHOW SLAVE STATUS;

根据参数Slave_IO_State,Slave_IO_Running,Slave_SQL_Running判断运行状态

START SLAVE;

SHOW SLAVE STATUS;

SHOW PROCESSLIST;


5. 给已经运行的主库创建备库

mysqldump --single-transaction --all-databases --master-data=2 --host=server1 | mysql --host=server2

选项--single-transaction使得转储的数据为事务开始前的数据。如果使用的是非事务型表,可以使用--lock-all-tables选项来获得所有表的一致性转储

只需要把备份或快照恢复到备库,然后使用CHANGE MASTER TO指定二进制日志的坐标。


6. 推荐的一些备置

在主库上二进制日志最重要的选项是sync_binlog:

sync_binlog=1

如果开启该选项,MySQL每次在提交事务前会将二进制日志同步到磁盘上,保证在服务器崩溃时不会丢失事件。在一个不需要作为主库的备库上,该选项带来了不必要的开销。它只用于二进制日志,而非中继日志。

推荐明确指定二进制日志的名字

log_bin=/var/lib/mysql/mysql-bin


在备库上,我们同样推荐开启如下配置选项,为中继日志指定绝对路径:

relay_log=/path/to/logs/relay-bin

skip_slave_start

read_only

指定绝对路径可以避免多个MySQL版本中存在的BUG,这些BUG可能会导致中继日志在一个意料外的位置创建。skip_slave_start选项能够阻止备库在崩溃后自动启动复制

如果正在使用MySQL5.5并且不介意额外的fsync导致的性能开销,最好设置以下选项:

sync_master_info =1

sync_relay_log     =1

sync_relay_log_info =1


7. 其它操作

跳过二进制日志

STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;        #跳过一个事务
START SLAVE;

0 0
原创粉丝点击