mysql 主從複製

來源:互聯網
上載者:User

標籤: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 [email protected] 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 [email protected]‘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 相同,如果設定多個從伺服器,每個從伺服器必須有一個唯一的 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 主從複製

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.