mariadb數據庫搭建一主一從

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時,搭建成功

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章