1 安裝mariadb數據庫
略
2 環境準備
主庫:192.168.239.129
從庫:192.168.239.130
3 主庫配置文件修改
vim /etc/my.cnf
在[mysqld]標籤下添加以下三條配置
log-bin=mariadblog # 打開二進制日誌事件
server-id=1 # 主庫標識號,可自定義
binlog-do-db=zentao # 需要進行同步的庫名(前提是這個庫需要真實地創建出來,且主庫與從庫都要有,初始數據保持一致),如不配置該項,會同步所有的庫,推薦進行配置
說明:
mariadb主從複製原理:
1) master記錄二進制日誌。在每個事務更新數據完成之前,master在二日誌記錄這些改變。Mariadb將事務寫入二進制日誌,即使事務中的語句都是交叉執行的。在事件寫入二進制日誌完成後,master通知存儲引擎提交事務。
2) slave將master的binary log拷貝到它自己的中繼日誌。首先,slave開始一個工作線程——I/O線程。I/O線程在master上打開一個普通的連接,然後開始binlog dump process。Binlog dump process從master的二進制日誌中讀取事件,如果已經執行完master產生的所有文件,它會睡眠並等待master產生新的事件。I/O線程將這些事件寫入中繼日誌。
3) SQL slavethread(SQL線程)處理該過程的最後一步。SQL線程從中繼日誌讀取事件,並重新執行其中的事件而更新slave的數據,使其與master中的數據一致。
4 從庫配置文件修改
vim /etc/my.cnf
在[mysqld]標籤下添加以下三條配置
server-id=2 # 從庫標識號,可自定義,不能與主庫相同
5 創建從庫訪問主庫的帳戶
mariadb> grant replication slave on *.* to 'slave_user'@'192.168.239.130' identified by '123456';
mariadb> flush privileges;
說明:
slave_user--帳號名稱
192.168.239.130--可通過帳號slave_user訪問主庫的服務器
123456--slave_user帳號對應的密碼
*.*--slave_user帳號可訪問所有庫的所有表,如要訪問test_db庫的test_table表,可寫爲test_db.test_table
6 從從庫192.168.239.130登陸主庫192.168.239.129
mariadb> mysql -h 192.168.239.129 -r root -p
進行遠程登陸測試時,有可能登陸不成功,不繼續進行下一步
7 主服務器上查看狀態:
mariadb> show master status;
+-----------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB |Binlog_Ignore_DB |
+-----------------+----------+--------------+------------------+
| mariadblog.000001 | 106 | zentao | |
如果執行show master status出現提示:
show master status;
說明第3步中log-bin=mariadblog未進行配置
8 從庫連接主庫,在從庫上執行:
mariadb> changemaster to master_host='192.168.239.129',master_user='slave_user', master_password='123456', master_port=3306,master_log_file='mariadblog.000001', master_log_pos=106,master_connect_retry=10;
mariadb> start slave;
mariadb> show slave status \G;
說明:
master_host--主庫IP
master_user--在第5步創建的帳號
master_password--在第5步創建的密碼
master_log_file--在第7步查詢到的File
master_log_pos--在第7步查詢到的Position
當執行完show slave status \G命令時,出現以下信息
***************************1. row ***************************
Slave_IO_State: Waiting formaster to send event
Master_Host: 192.168.1.201
Master_User: slave
Master_Port: 3306
Connect_Retry: 10
Master_Log_File:mariadblog.000001
Read_Master_Log_Pos: 396
Relay_Log_File:mariadb-relay-bin.000002
Relay_Log_Pos: 530
Relay_Master_Log_File:mariadblog.000001
Slave_IO_Running:Yes
Slave_SQL_Running: Yes
當Slave_IO_Running:Yes Slave_SQL_Running: Yes兩項爲yes時,搭建成功