本地windows配置
1、修改主服務器master:
#vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin //[必須]啓用二進制日誌
server-id=222 //[必須]服務器唯一ID,默認是1,一般取IP最後一段
2、修改從服務器slave:注:從服務器搭建
1.本地首先需要搭建一套mysql,可以使用集成環境。
2.需要單獨在搭建mysql,用來做主從複製
3.下載mysql[mysql-5.6.24-win32.1432006610.zip]
4、解壓安裝包 [mysql-5.6.24-win32.1432006610.zip]
5.配置 mysql環境變量 ( 修改PATH,添加D:\MysqlServer5.6\bin )
6.D:\MysqlServer5.6 目錄下新建my.ini 配置文件
#mysqld 配置
[mysqld]
port=3307
basedir=E:\php\zhucong\mysql-5.6.24-win32
datadir=E:\php\zhucong\mysql-5.6.24-win32\data
log_bin=mysql-bin
server_id=2
relay_log=mysql-relay-bin
log_slave_updates=1
read_only=1
auto-increment-increment=2
auto-increment-offset=2
binlog_checksum=none
3、啓動從服務器的mysql
使用管理員打開CMD窗口。
跳轉到mysql的bin目錄:
mysqld -install
7.啓動mysql服務。
net start mysql 啓動mysql服務
Net stop mysql 停止mysql服務
#/usr/local/mysql/bin/mysql -uroot -pmttang
mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帳號,“%”表示所有客戶端都可能連,只要帳號,密碼正確,此處可用具體客戶端IP代替,如192.168.145.226,加強安全。
使用navicat可以主庫查詢中執行
GRANT REPLICATION SLAVE,RELOAD,SUPER ON *.*
TO mysql_backup@'%'
IDENTIFIED BY '123456';
5、查詢主服務器的mysql,查詢master的狀態
注:執行完此步驟後不要再操作主服務器MYSQL,防止主服務器狀態值變化
如果master爲空,可能是二進制日誌沒有開啓
如果用解壓包可以在新建的my.ini文件中添加
Slave的配置與master類似,你同樣需要重啓slave的MySQL。如下:
log_bin = mysql-bin
server_id = 2
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1
注:中間不要有中文的空格
server_id是必須的,而且唯一。slave沒有必要開啓二進制日誌,但是在一些情況下,必須設置,例如,如果slave爲其它slave的master,必須設置bin_log。在這裏,我們開啓了二進制日誌,而且顯示的命名(默認名稱爲hostname,但是,如果hostname改變則會出現問題)。
relay_log配置中繼日誌,log_slave_updates表示slave將複製事件寫進自己的二進制日誌(後面會看到它的用處)。
有些人開啓了slave的二進制日誌,卻沒有設置log_slave_updates,然後查看slave的數據是否改變,這是一種錯誤的配置。所以,儘量使用read_only,它防止改變數據(除了特殊的線程)。但是,read_only並是很實用,特別是那些需要在slave上創建表的應用。
7、鏈接主庫
#停止從庫
Stop slave
#鏈接主庫
CHANGE MASTER TO master_host = '127.0.0.1',
master_user = 'mysql_backup',
master_password = '123456',
master_log_file = 'mysql-bin.000001',
master_log_pos = 3696;
#啓動從庫
Start slave
#查看從庫狀態
Show slave status
兩個線程都爲yes,則鏈接成功
或者在cmd中,進入數據庫
查看狀態
Linux配置主從
主從複製配置
步驟如下:
主服務器:從服務器ip地址分別爲
- 192.168.145.222、192.168.145.226
1、修改主服務器master:
- vi /etc/my.cnf
- [mysqld]
- log-bin=mysql-bin #[必須]啓用二進制日誌
- server-id=222 #[必須]服務器唯一ID,默認是1,一般取IP最後一段
2、修改從服務器slave:
- vi /etc/my.cnf
- [mysqld]
- log-bin=mysql-bin #[不是必須]啓用二進制日誌
- server-id=226 #[必須]服務器唯一ID,默認是1,一般取IP最後一段
3、重啓兩臺服務器的mysql
- systemctl restart mariadb
4、在主服務器上建立帳戶並授權slave:
- mysql
- mysql>GRANT REPLICATION SLAVE ON *.* to 'mysync'@'%' identified by 'q123456'; //一般不用root帳號,“%”表示所有客戶端都可能連,只要帳號,密碼正確,此處可用具體客戶端IP代替,如192.168.145.226,加強安全。
5、登錄主服務器的mysql,查詢master的狀態
- mysql>show master status;
- +------------------+----------+--------------+------------------+
- | File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
- +------------------+----------+--------------+------------------+
- | mysql-bin.000004 | 308 | | |
- +------------------+----------+--------------+------------------+
- 1 row in set (0.00 sec)
注:執行完此步驟後不要再操作主服務器MYSQL,防止主服務器狀態值變化
6、配置從服務器Slave:
注意mysql-bin.000004和308是第五步中的File和Position
- mysql>change master to master_host='192.168.145.222',master_user='mysync',master_password='q123456',master_log_file='mysql-bin.000004',master_log_pos=308; //注意mysql-bin.000004和308是第五步中的File和
- mysql>start slave; //啓動從服務器複製功能
7、檢查從服務器複製功能狀態:
- mysql> show slave status\G
- ************************** 1. row ***************************
- Slave_IO_State: Waiting for master to send event
- Master_Host: 192.168.2.222 //主服務器地址
- Master_User: mysync //授權帳戶名,儘量避免使用root
- Master_Port: 3306 //數據庫端口,部分版本沒有此行
- Connect_Retry: 60
- Master_Log_File: mysql-bin.000004
- Read_Master_Log_Pos: 600 //#同步讀取二進制日誌的位置,大於等於Exec_Master_Log_Pos
- Relay_Log_File: ddte-relay-bin.000003
- Relay_Log_Pos: 251
- Relay_Master_Log_File: mysql-bin.000004
- Slave_IO_Running: Yes //此狀態必須YES
- Slave_SQL_Running: Yes //此狀態必須YES
- ......
注:Slave_IO及Slave_SQL進程必須正常運行,即YES狀態,否則都是錯誤的狀態(如:其中一個NO均屬錯誤)。
以上操作過程,主從服務器配置完成。
9、主從服務器測試:
主服務器Mysql,建立數據庫,並在這個庫中建表插入一條數據:
- mysql> create database hi_db;
- Query OK, 1 row affected (0.00 sec)
- mysql> use hi_db;
- Database changed
- mysql> create table hi_tb(id int(3),name char(10));
- Query OK, 0 rows affected (0.00 sec)
- mysql> insert into hi_tb values(001,'bobu');
- Query OK, 1 row affected (0.00 sec)
- mysql> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | hi_db |
- | mysql |
- | test |
- +--------------------+
- 4 rows in set (0.00 sec)
- 從服務器Mysql查詢:
- mysql> show databases;
- +--------------------+
- | Database |
- +--------------------+
- | information_schema |
- | hi_db | //I'M here,大家看到了吧
- | mysql |
- | test |
- +--------------------+
- 4 rows in set (0.00 sec)
- mysql> use hi_db
- Database changed
- mysql> select * from hi_tb; //查看主服務器上新增的具體數據
- +------+------+
- | id | name |
- +------+------+
- | 1 | bobu |
- +------+------+
- 1 row in set (0.00 sec)