博主: haitianisgood
原博客网址:
Mysql主从复制配置
以下给简单配置
1、主从服务器分别作以下操作:
1.1、版本一致
1.2、初始化表,并在后台启动mysql
2、修改主服务器master
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必须]启用二进制日志
server-id=851 //[必须]服务器唯一ID,默认是1,一般取IP最后二段
expire_logs_days = 30
relay_log_purge = 0
relay-log=relay-bin
log_slave_updates = 1
3、修改从服务器slave
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[不是必须]启用二进制日志
server-id=852 //[必须]服务器唯一ID,默认是1,一般取IP最后二段
expire_logs_days = 30
relay_log_purge = 0
relay-log=relay-bin
log_slave_updates = 1
read_only=1
4、重启两台服务器的mysql
service mysql restart
5、在主服务器上建立帐户并授权slave
mysql>GRANT REPLICATION SLAVE ON *.* to 'repl852'@'%' identified by 'repl852';
6、登录主服务器的mysql,查询master的状态
mysql> show master status;
7、配置从服务器Slave并启动复制功能
change master to master_host='172.16.85.1',master_user='repl852',master_password='repl852',master_log_file='mysql-bin.000001',master_log_pos=1381;
注意不要断开,1308数字前后无单引号
启动复制功能
mysql>start slave; //启动从服务器复制功能
8、检查从服务器复制功能状态:
mysql> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.16.85.1
Master_User: repl852
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 1381
Relay_Log_File: relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
R eplicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 1381
Relay_Log_Space: 403
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: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 1
1 row in set (0.00 sec)
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态
到此主从服务器配置完成!!!
my.cnf参数说明:
expire_logs_days 设置日志过期时间并自动删除日志,包括log-bin和relay-log日志
relay_log_purge = 0 设置relay log 保留一段时间
log_slave_updates = 1 从库通过I0线程读取主库二进制日志文件,然后通过SQL线程写入的数据时候,写入从库自身的binlog日志
relay-log 设置relay日志
read_only=1设置数据库为只读模式,只对普通用户起作用。对root或拥有super权限的无效果。
注意:
不能复制主数据现有的数据库数据,只能复制新的数据库数据。
如果从数据库中没有主数据库中的某个数据库,而这个又更新,将导致整个主从无法复制。