mysql 主从复制
mysql 主从复制
一主一从
配置主库
1,主库 mysql11 上开启设置
# 添加如下配置
# 参数必须唯一, 本例主库设置为 11 ,从库设置为 12
server_id=101
log_bin=/var/log/mysql/mysql-bin
2,二进制日志文件的目录不是默认的,需要新建一下
# 创建文件夹
$ sudo mkdir /var/log/mysql
# 分配权限
$ sudo chown mysql:mysql /var/log/mysql
3,重启主库的 MySQL 服务
$ sudo systemctl restart mysqld
4,测试
mysql> show master status
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 154 | | | |
+------------------+----------+--------------+------------------+-------------------+
从结果看到, File 字段有值,并且前面与配置文件一致,说明配置正确。后面的 000001 说明是第一次,如果 MySQL 重启服务,这个值会递增为 mysql-bin.000002
配置从库
1,从库 mysql11 上配置
# 从库配置
server_id=12
log_bin=/var/log/mysql/mysql-bin.log
relay_log=/var/log/mysql/mysql-relay-bin.log
#库设为只读的
read_only=1
2,从库设置的二进制日志文件的目录不是默认的,需要新建一下
$ sudo mkdir /var/log/mysql
# 分配权限
$ sudo chown mysql:mysql /var/log/mysql
3,重启从库的 MySQL 服务
$ sudo systemctl restart mysqld
4,设置从库的复制参数
配置 mysql 主从复制时,在从机上需要进行 CHANGE MASTER TO 操作,以确定需要同步的主机 IP,用户名,密码,binlog 文件,binlog 位置等信息。
mysql> CHANGE MASTER TO MASTER_HOST='192.168.187.11',
-> MASTER_USER='admin',
-> MASTER_PASSWORD='admin',
#此选项初始化设置时需要跟主库中的一致。设置好后,如果主
#库发生重启等,不需再次设置,从库会跟着更新
-> MASTER_LOG_FILE='mysql-bin.000001',
# master Position的值
-> MASTER_LOG_POS=154;
change master to 配置和改变 slave 服务器用于连接 master 服务器的参数,以便 slave 服务器读取 master 服务器的 binlog 及 slave 服务器的 relay log。同时也更新 master info 及 relay log info 信息库。执行该语句前如果从机上 slave io 及 sql 线程已经启动,需要先停止(执行 stop slave)。 change master to 后面不指定某个参数的话,该参数保留原值或默认值。所以后续如果某些参数没有更改的话,change master to 后无需带该参数,例如我们只改变了用于复制的用户密码,那么 change master to 只需针对 MASTER_PASSWORD 选项作出修改即可,例如:
mysql> stop slave;
mysql> change master to master_password='new_password';
mysql> start slave;
5. 查看从库状态
mysql> show slave status \G
*************************** 1. row ***************************
Slave_IO_State:
Master_Host: 192.168.xxx.11
Master_User: admin
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 154
Relay_Log_File: mysql-relay-bin.000001
Relay_Log_Pos: 4
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: No
Slave_SQL_Running: No
*************************** 略 ***************************
6,从 Slave_IO_State, Slave_IO_Running: No, Slave_SQL_Running: No 表明当前从库的复制服务还没有启动, 启动从库
mysql> start slave;
Query OK, 0 rows affected (0.03 sec)
再次查看 show slave status G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.187.11
Master_User: admin
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 154
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 320
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
*************************** 略 ***************************
本文内容由互联网用户自发贡献,版权归作者所有,本社区不拥有所有权,也不承担相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件至:jaagool@sina.cn 进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容。