1 原理 当主库有更新操作的时候,主库会把更新操作的sql,写如到二进制日志文件当中,并维护一个二进制日志文件的索引文件,以便日志文件轮询 在从库启动异步复制的时候,从库会开启两个I/O线程
1 原理
当主库有更新操作的时候,主库会把更新操作的sql,写如到二进制日志文件当中,并维护一个二进制日志文件的索引文件,以便日志文件轮询
在从库启动异步复制的时候,从库会开启两个I/O线程
其中一个用于连接主库
另外一个用于传输sql
注意:
必须打开二进制日志文件
从库必须知道主库是从那一给位置偏移量开始的
主库和从库的数据库名称可以不一样,推荐使用一样
主库和从库的mysql版本必须一致
2·设置主从服务器
主服务器 192.168.125.128
从服务器 192.168.125.129
2.1 设置主服务器
vim /etc/my.cnf 中添加一下两条记录并重启
log-bin=mysql-bin
server_id=1
查看日志名称和point:
show master status;
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000004 | 181 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
在mysql主服务器中建一个用户并授权:
grant replication slave on *.* to repl@'%' identified by 'repl'
2.2 设置mysql从服务器
vim /etc/my.cnf 添加一下两条
log-bin=mysql-bin
server_id=2
在mysql中运行help change master to
2.3 验证
在从服务器设置好之后
开启主从服务:start slave;
查看当前设置状态:show slave status/G;
mysql> show slave status/G;*************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 192.168.125.128 Master_User: repl Master_Port: 3306 Connect_Retry: 10 Master_Log_File: mysql-bin.000004 Read_Master_Log_Pos: 181 Relay_Log_File: mysqld-relay-bin.000002 Relay_Log_Pos: 251 Relay_Master_Log_File: mysql-bin.000004 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 181 Relay_Log_Space: 407 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: 1 row in set (0.00 sec)ERROR: No query specified
上面两条Slave_IO_Running: Yes
Slave_SQL_Running: Yes
都成功就说明设置成功。
注意:如果显示Slave_IO_Running: No 请检查主从服务器各自的selinux 和iptable 是否都已经关闭
在主服务器上做一个操作,比如建库,建表,再在从服务器上检查是否已经复制到从服务器上
主服务器新建库:
mysql> create database base20161110;Query OK, 1 row affected (0.00 sec)mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || base1 || base20161110 || mysql || test |+--------------------+5 rows in set (0.00 sec)
从服务器已经自动复制了刚才主服务器新建的数据库:
mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || base20161110 || mysql || test |+--------------------+4 rows in set (0.01 sec)
主从服务器AB角 设置成功