Mariadb數據複製功能實現

                      Mariadb數據複製功能實現

 

實驗環境:兩臺服務器IP192.168.1.117IP192.168.1.118.

實驗目的:實現數據庫橫向擴展。

實驗方案:服務器192.168.1.117作爲主節點,服務器192.168.1.118.作爲從節點。

實驗步驟:分爲五步來完成實驗,首先數據庫安裝,其次主從節點配置,再次複製功能實現,最後做測試。

    一、數據庫的安裝

在此安裝mariadb-5.5.42-linux-x86_64版本。

[root@db ~]# mkdir -pv /mydata/data     //創建目錄,做數據存儲位置。實際應用中應掛硬盤。

mkdir: created directory `/mydata'

mkdir: created directory `/mydata/data'

[root@db ~]# useradd mysql          //創建mysql用戶。

[root@db ~]# chown -R mysql.mysql /mydata/data  

[root@db mariadb]# ls

mariadb-5.5.42-linux-x86_64.tar.gz

[root@db mariadb]# tar xf mariadb-5.5.42-linux-x86_64.tar.gz -C /usr/local/

[root@db ~]# cd /usr/local

 

[root@db local]# ln -sv mariadb-5.5.42-linux-x86_64 mysql    //解壓之後,創建鏈接文件。

`mysql' -> `mariadb-5.5.42-linux-x86_64'

[root@db local]# cd mysql

[root@db mysql]# chown -R root.mysql ./*

[root@db mysql]# mkdir /etc/mysql  //在此創建目錄放MySQL的配置文件。

[root@db mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf //mysql的配置文件。

[root@db mysql]# vim /etc/mysql/my.cnf

datadir=/mydata/data

 

[root@db mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld

cp: overwrite `/etc/rc.d/init.d/mysqld'? yes

[root@db mysql]# chmod +x /etc/rc.d/init.d/mysqld

[root@db mysql]# scripts/mysql_install_db --datadir=/mydata/data --user=mysql//數據庫的初始化。

[root@db mysql]# mkdir -pv /mydata/{binlogs,relaylogs}  //二進制日誌和中繼日誌存放位置。

mkdir: created directory `/mydata/binlogs'

mkdir: created directory `/mydata/relaylogs'

[root@db mysql]#

[root@db mysql]# chown -R mysql.mysql /mydata/  ///mydata/目錄下的所有文件定義成mysql用戶mysql組。

[root@db mysql]# vim /etc/profile.d/mysql.sh     //配置mysqlPATH路徑。

export PATH=/usr/local/mysql/bin:$PATH

[root@db mysql]# source /etc/profile.d/mysql.sh  //到此處mariadb的安裝基本完成。

 

    二、數據庫的主從節點配置

[root@db mysql]# vim /etc/mysql/my.cnf     //在此定義主節點,此時切換到

log-bin=/mydata/binlogs/mysql-master-bin

binlog_format=mixed

server-id       = 1

[root@db mysql]# vim /etc/mysql/my.cnf     //在此定義從節點。

relay-log=/mydata/relaylogs/mysql-relay-log

# log-bin=mysql-bin

# binlog_format=mixed

server-id       = 11

[root@db mysql]# service mysqld start

Starting MySQL.....                                        [  OK  ]

 [root@db mysql]# mysql   //啓動之後即可以

Welcome to the MariaDB monitor.  Commands end with ; or \g.

Your MariaDB connection id is 2

Server version: 5.5.42-MariaDB MariaDB Server

 

Copyright (c) 2000, 2015, Oracle, MariaDB Corporation Ab and others.

 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

 

MariaDB [(none)]>

     三、數據庫的複製功能實現

在主節點上,創建有複製權限的賬號。

MariaDB [(none)]> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.* TO reuser@'192.168.1.118' IDENTIFIED BY 'repass';

Query OK, 0 rows affected (0.06 sec)

 

MariaDB [(none)]> FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.12 sec)

 

MariaDB [(none)]> SHOW MASTER STATUS;

+-------------------------+----------+--------------+------------------+

| File                    | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+-------------------------+----------+--------------+------------------+

| mysql-master-bin.000002 |      745 |              |                  |

+-------------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

在從節點上使用有複製權限的賬號鏈接master

MariaDB [(none)]> CHANGE MASTER TO MASTER_HOST='192.168.1.117',MASTER_USER='reuser',MASTER_PASSWORD='repass',MASTER_LOG_FILE='mysql-master-bin.000002',MASTER_LOG_POS=745;

Query OK, 0 rows affected (0.22 sec)

 

MariaDB [(none)]> SHOW SLAVE STATUS\G;  //下面只是一部分。

*************************** 1. row ***************************

               Slave_IO_State:

                  Master_Host: 192.168.1.117

                  Master_User: reuser

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-master-bin.000002

          Read_Master_Log_Pos: 745

               Relay_Log_File: mysql-relay-log.000001

                Relay_Log_Pos: 4

        Relay_Master_Log_File: mysql-master-bin.000002

             Slave_IO_Running: No   

            Slave_SQL_Running: No    //io線程和sql線程均未啓動。

在從節點數據io線程和sql線程的開啓。

MariaDB [(none)]> START SLAVE;

Query OK, 0 rows affected (0.12 sec)

 

MariaDB [(none)]> SHOW SLAVE STATUS\G;   //再次查看已開啓。

*************************** 1. row ***************************

               Slave_IO_State: Waiting for master to send event

                  Master_Host: 192.168.1.117

                  Master_User: reuser

                  Master_Port: 3306

                Connect_Retry: 60

              Master_Log_File: mysql-master-bin.000002

          Read_Master_Log_Pos: 832

               Relay_Log_File: mysql-relay-log.000002

                Relay_Log_Pos: 623

        Relay_Master_Log_File: mysql-master-bin.000002

             Slave_IO_Running: Yes

            Slave_SQL_Running: Yes

    四、做下測試,現在主節點上創建一個數據庫,而後查看從節點上數據庫

MariaDB [(none)]> CREATE DATABASE dbtest;

Query OK, 1 row affected (0.05 sec)

MariaDB [(none)]> SHOW DATABASES;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| dbtest             |

| mysql              |

| performance_schema |

| test               |

+--------------------+

5 rows in set (0.06 sec)

 

MariaDB [(none)]>

 

MariaDB [(none)]> SHOW DATABASES; //在從節點上查看數據庫信息,很明顯實驗成功了。

+--------------------+

| Database           |

+--------------------+

| information_schema |

| dbtest             |

| mysql              |

| performance_schema |

| test               |

+--------------------+

5 rows in set (0.30 sec)

 

MariaDB [(none)]>

 

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