设置MySQL主从同步

时间:2023-01-11 18:42:56

1. 配置主服务器

1.1 编辑my.cnf文件,配置主服务器ID。

[mysqld]
log-bin=mysql-bin
server-id=1
relay-log = relay-bin
relay-log-index = relay-bin.index

1.2 重启主服务器。

2. 配置从服务器

2.1 编辑my.cnf文件,配置从服务器ID。

[mysqld]
server-id=2

2.2 重启从服务器。

3. 创建同步帐号

3.1 创建复制用户。用户名和密码将会明文存储在同步信息文件master.info中。

mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';

3.2 授权复制用户

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';

4. 获取binlog同步点信息

4.1 暂停主服务器的写入。在对主服务器加锁后,当前会话不能退出,否则会自动释放锁。

mysql> FLUSH TABLES WITH READ LOCK;

4.2 获取binlog文件名和偏移量。

mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73 | test | manual,mysql |
+------------------+----------+--------------+------------------+

5. 创建主服务器快照

5.1 快照需要排除的文件列表。

  • mysql库相关的文件
  • master.info信息文件
  • 主服务器产生的binlog文件
  • 其他中转日志文件

5.2 确保获取了同步点信息。

5.3 关闭主服务器。

shell> mysqladmin shutdown

5.4 同步主服务器数据

shell> rsync -av mysql/ work@lab08:/home/work/local/mysql/ --exclude=var/mysql-bin.* --exclude=var/slow.log 

5.5 启动主服务器。

6. 在从服务器设置同步信息

6.1 命令行设置

mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name',
    ->     MASTER_PORT=1127,
    ->     MASTER_USER='replication_user_name',
-> MASTER_PASSWORD='replication_password',
-> MASTER_LOG_FILE='recorded_log_file_name',
-> MASTER_LOG_POS=recorded_log_position;

6.2 启动slave同步

mysql> SLAVE START\G;

6.3 查看slave同步状态

mysql> SHOW SLAVE STAUTS\G;

如果观察到以下都为Yes,表明开始正常同步了。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

 

7 设置从库只读

有两种方式设置从库只读,修改配置或设置全局变量。

7.1 修改my.cnf文件

  #从库是否只读,0表示可读写,1表示只读

  read-only=1

7.2 动态设置参数

  set global read_only=true;

参考手册

http://dev.mysql.com/doc/refman/5.0/en/replication-howto.html