天天看点

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,如需转载请自行联系原作者