MySQL主從介紹、準備工作、配置主、配置從、測試主從同步
MySQL主從介紹
MySQL主從又叫做Replication、AB復制。簡單講就是A和B兩臺機器做主從後,在A上寫數據,另外一臺B也會跟著寫數據,兩者數據實時同步。MySQL主從是基於binlog的,主上須開啟binlog才能進行主從。
主從過程:
需要保持數據的一致性,才能復制數據
1、主服務器將更改操作記錄到binlog中
2、從服務器將主服務器的binlog事件(SQL語句)同步到本機(從服務器)並記錄在relaylog(中繼日誌)中
3、從服務器根據relaylog裏面的SQL語句按順序執行
說明: 該過程有三個線程,主上有一個log dump線程,用來和從的i/o線程傳輸binlog;從上有兩個線程,其中i/o線程用來同步主的binlog並生成relaylog,另外一個SQL線程用來把relaylog裏面的SQL語句執行。
應用的場景:
1、備份重要的數據
2、分擔主庫服務器的讀的壓力,讓從服務器讀,主服務器寫操作
準備工作
主服務器:192.168.3.74 安裝mysql5.6
從服務器:192.168.3.83 安裝mysql5.6
配置主
1、[root@centos7 system]# vi /etc/my.cnf
[mysqld]
server-id=132
log_bin=jacklinux
2、重啟:
[root@centos7 system]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS!
Starting MySQL.. SUCCESS!
[root@centos7 system]# ls -lt /data/mysql/ #二進制文件,不能查看
-rw-rw---- 1 mysql mysql 19 Nov 22 09:33 jacklinux.index
-rw-rw---- 1 mysql mysql 120 Nov 22 09:33 jacklinux.000001
3、新建一個數據庫為試驗做準備:
[root@centos7 mysql]# mysqldump -uroot -p123456 zrlog > /tmp/zrlog.sql
[root@centos7 mysql]# mysql -uroot -p123456 -e "create database jacktest"
[root@centos7 mysql]# mysql -uroot -p123456 jacktest < /tmp/zrlog.sql
4、創建同步賬號
mysql> grant replication slave on *.* to ‘repl‘@‘192.168.3.83‘ identified by ‘123456‘;
#只給復制權限,對所有庫所有表,ip為從服務器的ip,賬號為repl,密碼:123456
Query OK, 0 rows affected (0.00 sec)
mysql> flush tables with read lock;
#先進行鎖表,等主從服務器數據保持一致,再解鎖表
Query OK, 0 rows affected (0.00 sec)
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| jacklinux.000001 | 10989 | | | |
+------------------+----------+--------------+------------------+-------------------+
#需要記錄file、position位置
配置從
1、[root@test ~]# vim /etc/my.cnf
[mysqld]
server-id=130
#必須得和主服務器上的server-id不一樣
2、[root@test ~]# scp 192.168.3.74:/tmp/*.sql .
3、mysql> create database zrlog;
4、恢復數據庫
[root@test ~]# mysql -uroot zrlog < zrlog.sql
實現主從同步:
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> change master to master_host=‘192.168.3.74‘,master_user=‘repl‘,master_password=‘123456‘,master_log_file=‘jacklinux.000001‘,master_log_pos=10989;
#master_log_file、master_log_pos:主服務器上
mysql> start slave;
mysql> show slave status\G
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
5、解鎖主庫的表(在主上操作):
mysql> unlock tables;
此時主從復制搭建完成,下一步驗證。
測試主從同步
主服務器:
binlog-do-db= 僅同步指定的庫
binlog-ignore-db= 忽略指定的庫
從服務器:
replicate_do_db= 同步指定的庫
replicate_ignore_db= 忽略指定的庫
replicate_do_table= 同步指定的表
replicate_ignore_table= 忽略指定的表
replicate_wild_do_table= 如aming.%,支持通配符
replicate_wild_ignore_table= 忽略
驗證:
主服務器上創建表zrtest,並插入數據
mysql> use zrlog
mysql> create table zrtest(id int);
Query OK, 0 rows affected (0.02 sec)
mysql> desc zrtest;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.01 sec)
mysql> insert zrtest value(1);
Query OK, 1 row affected (0.01 sec)
mysql> insert zrtest value(20);
Query OK, 1 row affected (0.00 sec)
mysql> select * from zrtest;
+------+
| id |
+------+
| 1 |
| 20 |
+------+
從服務器上查看是否有zrtest表,還有數據
mysql> use zrlog;
mysql> select * from zrtest;
+------+
| id |
+------+
| 1 |
| 20 |
+------+
驗證完成,可以同步
本文出自 “探索發現新事物” 博客,請務必保留此出處http://jacksoner.blog.51cto.com/5802843/1983983
MySQL主從介紹、準備工作、配置主、配置從、測試主從同步