天天看點

centos7 maiadb主從複制搭建

需求:

由于要使用saltstack,部署環境,先手動搭建了下主從環境,發現原來的word資料都找不到了,是以這次趕緊的記錄到部落格當中!!

環境:

兩台裝置,ip位址分别為:

node1:192.168.56.11

node2:192.168.56.12

系統:Centos7

軟體包:使用系統自帶的yum 來安裝的mariadb

==========================================================================================

安裝:

分别在兩台裝置上安裝資料庫mariadb,使用yum來安裝的,可以更換成過内的yum源來操作

指令:yum install -y mariadb mariadb-server

配置:

先配置node1上的master配置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

<code>[root@salt-node1 ~]</code><code># vim /etc/my.cnf</code>

<code>[mysqld]</code>

<code>innodb_file_per_table=NO</code>

<code>log-bin=</code><code>/var/lib/mysql/master-bin</code> <code>#這裡如果不指定路徑預設是在datadir下面生成</code>

<code>binlog_format=mixed</code>

<code>server-</code><code>id</code> <code>= 11</code><code>#這個主節點一定要是唯一的</code>

<code>datadir=</code><code>/var/lib/mysql</code>

<code>socket=</code><code>/var/lib/mysql/mysql</code><code>.sock</code>

<code># Disabling symbolic-links is recommended to prevent assorted security risks</code>

<code>symbolic-links=0</code>

<code># Settings user and group are ignored when systemd is used.</code>

<code># If you need to run mysqld under a different user or group,</code>

<code># customize your systemd unit file for mariadb according to the</code>

<code># instructions in http://fedoraproject.org/wiki/Systemd</code>

<code>[mysqld_safe]</code>

<code>log-error=</code><code>/var/log/mariadb/mariadb</code><code>.log</code>

<code>pid-</code><code>file</code><code>=</code><code>/var/run/mariadb/mariadb</code><code>.pid</code>

<code>#</code>

<code># include all files from the config directory</code>

<code>!includedir </code><code>/etc/my</code><code>.cnf.d</code>

重新開機node1上的mysql服務

<code>systemctl restart mariadb.service</code>

登入mysql:

<code>mysql -uroot -p</code>

<code>我這裡測試就沒有設定密碼</code>

建立帳号并賦予replication的權限。從庫,主從庫複制資料時需要使用這個帳号進行

<code>grant replication slave on *.* to </code><code>'root'</code><code>@</code><code>'192.168.56.%'</code> <code>identified by </code><code>'123456'</code><code>;</code>

加鎖:

實際工作中,需要禁止資料庫的寫入,要給資料庫上鎖

<code>FLUSH TABLES WITH READ LOCK;</code>

記錄主庫的binlog日志檔案和位置資訊(這個資訊,要在從庫配置的時候用到)

<code>MariaDB [(none)]&gt; show master status;</code>

<code>+-------------------+----------+--------------+------------------+</code>

<code>| File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |</code>

<code>| master-bin.000001 |      398 |              |                  |</code>

<code>1 row </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

備份主庫的資料:

<code>mysqldump -uroot -p --all-databases &gt; </code><code>/tmp/db</code><code>.sql</code>

下面開始配置從庫:

導入資料到從庫當中

<code>mysql -uroot -p &lt;</code><code>/tmp/db</code><code>.sql</code>

修改配置檔案my.cnf:

25

26

<code>[root@salt-node2 ~]</code><code># cat /etc/my.cnf</code>

<code>#log-bin=mysql-bin</code>

<code>server-</code><code>id</code> <code>= 12</code>

<code>relay-log = </code><code>/var/lib/mysql/relay-bin</code>

<code>#log_slave_updates = 1</code>

<code>read_only = on</code>

重新開機服務:

登入mysql

設定主從服務配置

<code>CHANGE MASTER TO MASTER_HOST=</code><code>'192.168.56.11'</code><code>,MASTER_USER=</code><code>'root'</code><code>, MASTER_PASSWORD=</code><code>'123456'</code><code>, MASTER_LOG_FILE=</code><code>'master-bin.000001'</code><code>, MASTER_LOG_POS= 398;</code>

開啟主從服務:

<code>start slave;</code>

檢視從庫狀态:

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

<code>MariaDB [(none)]&gt; show slave status\G;</code>

<code>*************************** 1. row ***************************</code>

<code>               </code><code>Slave_IO_State: Waiting </code><code>for</code> <code>master to send event</code>

<code>                  </code><code>Master_Host: 192.168.56.11</code>

<code>                  </code><code>Master_User: root</code>

<code>                  </code><code>Master_Port: 3306</code>

<code>                </code><code>Connect_Retry: 60</code>

<code>              </code><code>Master_Log_File: master-bin.000001</code>

<code>          </code><code>Read_Master_Log_Pos: 485</code>

<code>               </code><code>Relay_Log_File: relay-bin.000002</code>

<code>                </code><code>Relay_Log_Pos: 617</code>

<code>        </code><code>Relay_Master_Log_File: master-bin.000001</code>

<code>             </code><code>Slave_IO_Running: Yes</code>

<code>            </code><code>Slave_SQL_Running: Yes</code>

<code>              </code><code>Replicate_Do_DB: </code>

<code>          </code><code>Replicate_Ignore_DB: </code>

<code>           </code><code>Replicate_Do_Table: </code>

<code>       </code><code>Replicate_Ignore_Table: </code>

<code>      </code><code>Replicate_Wild_Do_Table: </code>

<code>  </code><code>Replicate_Wild_Ignore_Table: </code>

<code>                   </code><code>Last_Errno: 0</code>

<code>                   </code><code>Last_Error: </code>

<code>                 </code><code>Skip_Counter: 0</code>

<code>          </code><code>Exec_Master_Log_Pos: 485</code>

<code>              </code><code>Relay_Log_Space: 905</code>

<code>              </code><code>Until_Condition: None</code>

<code>               </code><code>Until_Log_File: </code>

<code>                </code><code>Until_Log_Pos: 0</code>

<code>           </code><code>Master_SSL_Allowed: No</code>

<code>           </code><code>Master_SSL_CA_File: </code>

<code>           </code><code>Master_SSL_CA_Path: </code>

<code>              </code><code>Master_SSL_Cert: </code>

<code>            </code><code>Master_SSL_Cipher: </code>

<code>               </code><code>Master_SSL_Key: </code>

<code>        </code><code>Seconds_Behind_Master: 0</code>

<code>Master_SSL_Verify_Server_Cert: No</code>

<code>                </code><code>Last_IO_Errno: 0</code>

<code>                </code><code>Last_IO_Error: </code>

<code>               </code><code>Last_SQL_Errno: 0</code>

<code>               </code><code>Last_SQL_Error: </code>

<code>  </code><code>Replicate_Ignore_Server_Ids: </code>

<code>             </code><code>Master_Server_Id: 11</code>

<code>ERROR: No query specified</code>

<code>             </code><code>Slave_IO_Running: Yes </code><code>#這裡必須為yes,如果不是,需要排查故障</code>

<code>            </code><code>Slave_SQL_Running: Yes </code><code>#這裡必須為yes,如果不是,需要排查故障</code>

主從驗證,

<code>#主庫建立資料庫</code>

<code>MariaDB [(none)]&gt; create database jiayou ;</code>

<code>Query OK, 1 row affected (0.00 sec)</code>

<code>#從庫檢視是否同步過來這個資料庫</code>

<code>MariaDB [(none)]&gt; show databases;</code>

<code>+--------------------+</code>

<code>| Database           |</code>

<code>| information_schema |</code>

<code>| gg                 |</code>

<code>| jiayou             |</code>

<code>| kk                 |</code>

<code>| mysql              |</code>

<code>| performance_schema |</code>

<code>| salt               |</code>

<code>| </code><code>test</code>               <code>|</code>

<code>8 rows </code><code>in</code> <code>set</code> <code>(0.00 sec)</code>

有時候會有一些故障問題,可以參考下面這個部落格,自己懶的寫了

本文轉自 kesungang 51CTO部落格,原文連結:http://blog.51cto.com/sgk2011/1911038,如需轉載請自行聯系原作者