标签:mysql主从复制
#################
### mysql 主从复制 ###
#################
1、MySQL 主从复制基本工作原理 :
主服务器将改变记录记录到她的二进制日志中,从服务器将主服务器的二进制日志复制到它的中级日志中去,然后通过中级日志改变它的数据,这样就实现了主从复制。
2、Slave 的两个线程:
I/O 线程:将主服务器的二进制日志写入到中继日志中去
sql 线程:读取中继日志的内容,更新数据。
一、环境准备
主服务器:redhat6.5 IP:172.25.24.1 安装 mysql server1
从服务器:redhat6.5 IP:172.25.24.2 安装 mysql server2
二、配置:
1、主从服务器分别作以下操作:
1.1、版本一致
tar xf mysql-5.7.17-1.el6.x86_64.rpm-bundle.tar
yum install -y mysql-community-libs-5.7.17-1.el6.x86_64.rpm mysql-community-libs-compat-5.7.17-1.el6.x86_64.rpm mysql-community-server-5.7.17-1.el6.x86_64.rpm mysql-community-client-5.7.17-1.el6.x86_64.rpm mysql-community-common-5.7.17-1.el6.x86_64.rpm
/etc/init.d/mysqld start
1.2、初始化表,并在后台启动 mysql
grep password /var/log/mysqld.log ##找出mysql初始密码
mysql -p
1.3、修改 root 的密码
mysql> ALTER USER root@localhost identified by ‘Westos+007‘;
2、修改主服务器 master:
vim /etc/my.cnf
在[mysqld]下添加一下参数
log-bin=mysql-bin #启动二进制日志系统
binlog-do-db=test #二进制需要同步的数据库名,如果需要同步多个库,例如要再同步 westos
库,再添加一行“binlog-do-db=westos”,以此类推
server-id=1 #必须为 1 到 232–1 之间的一个正整数值
binlog-ignore-db=mysql #禁止同步 mysql 数据库
/etc/init.d/mysqld restart #重启mysql
mysql> GRANT REPLICATION SLAVE ON *.* TO panghu@‘172.25.24.%‘ IDENTIFIED BY ‘Westos+007‘; #创建同步帐户,并给予权限
mysql> Flush privileges; #刷新
测试:
server2:
mysql -u panghu -p -h 172.25.24.1 ##登陆mysql
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
server1:
mysql> show master status; ##查询 master 的状态
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 601 | test | mysql | |
注:执行完此步骤后不要再操作主服务器 MYSQL,防止主服务器状态值变化
3、修改从服务器 slave:
vim /etc/my.cnf
[mysqld]
log-bin=mysql-bin ##[不是必须]启用二进制日志
server-id=2 ##[必须]服务器唯一 ID,默认是 1,一般取IP 最后一段,从服务器 ID 号,不要和主 ID 相同,如果设置多个从服务器,每个从服务器必须有一个唯一的 server-id 值,必须与主服务器的以及其它从服务器的不相同。可以认为 server-id 值类似于 IP 地址:这些 ID 值能唯一识别复制服务器群集中的每个服务器实例。
4、在主服务器上查看master_log_pos值:
cd /var/lib/mysql/
mysqlbinlog mysql-bin.000001
5、配置从服务器 Slave:
mysql> change master to master_host=‘172.25.24.1‘, master_user=‘panghu‘, master_password=‘Westos+007‘, master_log_file=‘mysql-bin.000001‘, master_log_pos=514; ##注意不要断开,514数字前后无单引号。
mysql> start slave; ##启动从服务器复制功能
6、检查从服务器复制功能状态:
mysql> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 172.25.24.1 ##主服务器地址
Master_User: panghu ##授权帐户名,尽量避免使用
Master_Port: 3306 ##数据库端口,部分版本没有此行
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 601 ##同步读取二进制日志的位置,大于等于 Exec_Master_Log_Pos
Relay_Log_File: ddte-relay-bin.000002
Relay_Log_Pos: 407
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes ##此状态必须 YES
Slave_SQL_Running: Yes ##此状态必须 YES
......
注:Slave_IO 及 Slave_SQL 进程必须正常运行,即 YES 状态,否则都是错误的状态(如:其中一个 NO 均属错误)。
以上操作过程,主从服务器配置完成。
7、主从服务器测试:server1
主服务器 Mysql,建立数据库,并在这个库中建表插入一条数据:
mysql> create database test;
mysql> use test;
mysql> create table usertb (
-> username varchar(15) not null,
-> password varchar(25) not null);
mysql> desc usertb;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| username | varchar(15) | NO | | NULL | |
| password | varchar(25) | NO | | NULL | |
+----------+-------------+------+-----+---------+-------+
mysql> insert into usertb values (‘user1‘,‘111‘);
mysql> select * from usertb;
+----------+----------+
| username | password |
+----------+----------+
| user1 | 111 |
+----------+----------+
从服务器 Mysql 查询:server2
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
+--------------------+
mysql> use test;
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| usertb |
+----------------+
mysql> select * from usertb;
+----------+----------+
| username | password |
+----------+----------+
| user1 | 111 |
+----------+----------+
标签:mysql主从复制
原文地址:http://12774035.blog.51cto.com/12764035/1953773