說明
MySQL版本爲5.6.26
安裝MySQL步驟就省略了。
MySQL主從複製注意點
1、在master端要啓用binlog日誌。slave端不用啓用binlog日誌
2、master和slave的server-id要不一樣
主從my.cnf配置的區別
不列出server-id了,設置不同即可。主要是[mysqld]區域的 不同
master
log-bin =/data/mysql_log/mysql-bin
expire-logs-days = 14
sync-binlog = 1
binlog_format = row
slave
relay-log =/data/mysql_log/mysql-relay.log
relay-log-index =/data/mysql_log/mysql-relay.index
架構圖
系統環境
# cat /etc/redhat-release
CentOS release 6.6 (Final)
# uname -rm
2.6.32-504.el6.x86_64 x86_64
在主庫上創建數據庫並插入數據
mysql> create databasekevin;
Query OK, 1 row affected(0.00 sec)
mysql> use kevin
Database changed
mysql> create tablestudent(
-> id int(4) not null auto_increment,
-> name char(20) not null,
-> primary key(id),
-> key index_name(name)
-> )AUTO_INCREMENT=1;
Query OK, 0 rows affected(0.10 sec)
mysql> insert intostudent values(1,'Kevin'),(2,'Dave'),(3,'Danny'),(4,'Jenny'),(5,'Jerry');
Query OK, 5 rows affected(0.02 sec)
Records: 5 Duplicates: 0 Warnings: 0
創建主從複製
在master上操作
建立同步用戶
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repuser'@'192.168.56.%' IDENTIFIED BY '123456';
Query OK, 0 rows affected(0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected(0.00 sec)
mysql> FLUSH LOGS;
Query OK, 0 rows affected(0.00 sec)
mysql> show binary logs;
+------------------+-----------+
| Log_name | File_size |
+------------------+-----------+
| mysql-bin.000001 | 2189 |
| mysql-bin.000002 | 323 |
+------------------+-----------+
2 rows in set (0.00 sec)
mysql> \q
Bye
備份數據庫
[root@mysql-master ~]#innobackupex --user=root --password=123456 /backup/
準備備份
[root@mysql-master ~]#innobackupex --apply-log /backup/2016-05-18_19-19-38/
在插入一條數據
mysql> use kevin
Database changed
mysql> insert intostudent values(6,'Lucy');
Query OK, 1 row affected(0.14 sec)
mysql> select * fromstudent\G
***************************1. row ***************************
id: 3
name: Danny
***************************2. row ***************************
id: 2
name: Dave
***************************3. row ***************************
id: 4
name: Jenny
***************************4. row ***************************
id: 5
name: Jerry
***************************5. row ***************************
id: 1
name: Kevin
***************************6. row ***************************
id: 6
name: Lucy
6 rows in set (0.00 sec)
mysql> show masterstatus\G
將備份拷貝到從庫上
[root@mysql-master ~]# scp -r /backup/2016-05-18_19-19-38 [email protected]:/backup/
slave上操作
刪除原始數據
[root@mysql-slave01 ~]# cd /data/mysql_data/
[root@mysql-slave01mysql_data]# rm -fr *
[root@mysql-slave01mysql_data]# cd
恢復數據
[root@mysql-slave01 ~]#innobackupex --copy-back /backup/2016-05-18_19-19-38/
[root@mysql-slave01 ~]#chown -R mysql.mysql /data/mysql_data/
啓動MySQL
[root@mysql-slave01 ~]#/etc/init.d/mysqld start
驗證數據
[root@mysql-slave01 ~]#mysql -uroot –p
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| kevin |
| mysql |
| performance_schema |
+--------------------+
4 rows in set (0.04 sec)
mysql> use kevin;
Database changed
mysql> select * from student;
+----+-------+
| id | name |
+----+-------+
| 3 | Danny |
| 2 | Dave |
| 4 | Jenny |
| 5 | Jerry |
| 1 | Kevin |
+----+-------+
5 rows in set (0.07 sec)
從從庫上讀主庫的binlog
mysql> change master to master_host='192.168.56.12',master_port=3306,master_user='repuser',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=2189;
啓動slave
mysql> start slave;或者執行START SLAVE IO_Thread;和START SLAVE SQL_Thread;
mysql> select * froms tudent;
+----+-------+
| id | name |
+----+-------+
| 3 | Danny |
| 2 | Dave |
| 4 | Jenny |
| 5 | Jerry |
| 1 | Kevin |
| 6 | Lucy |
+----+-------+
6 rows in set (0.00 sec)
現在數據完全同步
在slave2上進行與slave1的完全一樣的操作即可。
由於個人技術所限有不足之處還請各位指出。可以通過以下兩個羣找到筆者。
北京linux運維求職招聘羣:153677549
Linux運維開發羣:298324302