1、主从服务器分别作以下操作:
1.1、版本一致。(mysql-5.5.27)
1.2、初始化表,并在后台启动mysql
1.3、修改root的密码
1.4、主服务器master:192.168.142.131
1.4、从服务器slave:192.168.142.133
2、修改主服务器master:
#vi /etc/my.cnf
[mysqld]
#
log-bin=mysql-bin #[必须]启用二进制日志
server-id=131 #[必须]服务器唯一ID,默认是1,一般取IP最后一段
#binlog-do-db =test #需要备份数据,多个写多行
#binlog-ignore-db =mysql #不需要备份的数据库,多个写多行
3、修改从服务器slave:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin #[不是必须]启用二进制日志
server-id=133 #[必须]服务器唯一ID,默认是1,一般取IP最后一段
#master-connect-retry=60 #如果从服务器发现主服务器断掉,重新连接的时间差(秒)
#replicate-do-db =test #只复制某个库
#replicate-ignore-db=mysql #不复制某个库
4、重启两台服务器的mysql
service mysqld restart
5、在主服务器上建立帐户并授权slave:
# mysql -uroot -p123456
mysql>GRANT REPLICATION SLAVE ON *.* to ‘clevercode‘@‘%‘ identified by ‘q123456‘; //一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.226,加强安全。
6、登录主服务器的mysql,查询master的状态
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000011 | 248 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)
注:执行完此步骤后不要再操作主服务器MYSQL,防止主服务器状态值变化
7、配置从服务器Slave:
mysql>stop slave;
mysql>change master to master_host=‘192.168.142.131‘,master_user=‘clevercode‘,master_password=‘q123456‘,
master_log_file=‘mysql-bin.000011‘,master_log_pos=248; //注意不要断开,248数字前后无单引号。
Mysql>start slave; //启动从服务器复制功能,如果slave是启动状态,需要先stop slave;
8、检查从服务器复制功能状态:
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.142.131 //主服务器地址
Master_User: clevercode //授权帐户名,尽量避免使用root
Master_Port: 3306 //数据库端口,部分版本没有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000012
Read_Master_Log_Pos: 107 //#同步读取二进制日志的位置,大于等于Exec_Master_Log_Pos
Relay_Log_File: centos64idx4-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000012
Slave_IO_Running: Yes //此状态必须YES
Slave_SQL_Running: Yes //此状态必须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: 107
Relay_Log_Space: 416
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: 131
1 row in set (0.00 sec)
注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
9、主从服务器测试:
1、主服务器Mysql,建立数据库,并在这个库中建表插入一条数据:
mysql> create database db_clevercode;
Query OK, 1 row affected (1.77 sec)
mysql> use db_clevercode;
Database changed
mysql> create table tb_test(id int(3),name char(10));
Query OK, 0 rows affected (14.17 sec)
mysql> insert into tb_test values(1,‘clevercode‘);
Query OK, 1 row affected (1.60 sec)
2、从服务器Mysql查询:
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db_clevercode |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
mysql> use db_clevercode;
Database changed
mysql> select * from tb_test;
+------+------------+
| id | name |
+------+------------+
| 1 | clevercode |
+------+------------+
1 row in set (0.01 sec)
10、主从同步延时:
通过监控show slave status\G命令输出的Seconds_Behind_Master参数的值来判断,是否有发生主从延时。其值有这么几种:
NULL — 表示io_thread或是sql_thread有任何一个发生故障,也就是该线程的Running状态是No,而非Yes。
0 — 该值为零,是我们极为渴望看到的情况,表示主从复制良好,可以认为lag不存在。
正值 — 表示主从已经出现延时,数字越大表示从库落后主库越多。
版权声明:本文为博主原创文章,未经博主允许不得转载。