Linux服務器MySQL數據庫安裝及主從配置(CentOS 7)

Linux服務器MySQL數據庫安裝及主從配置(CentOS 7)

Mysql的主從複製至少是需要兩個Mysql的服務,當然Mysql的服務是可以分佈在不同的服務器上,也可以在一臺服務器上啓動多個服務。

首先確保主從服務器上的Mysql版本相同。

 

一、安裝部署mysql

使用yum安裝mysql 

0、首先,將MySQL Yum存儲庫添加到系統的存儲庫列表中(wget 將yum源下載到指定服務器,我這裏放在了 /user/local 上)

     https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html

1、安裝下載的發行包

     sudo yum localinstall mysql57-community-release-el7-{version-number}.noarch.rpm (替換爲你下載的yum源)

2、使用命令檢查MySQL Yum存儲庫是否已成功添加

     yum repolist enabled | grep "mysql.*-community.*"

3、查看MySQL Yum存儲庫中的所有子存儲庫(所有可安裝的數據庫版本),並查看哪些子存儲庫已啓用或禁用

      yum repolist all | grep mysql

4、啓用要安裝的版本的子存儲庫,並禁用其他版本的子存儲庫 (我安裝的是mysql5.7 禁用了8.0)

      sudo yum-config-manager --enable mysql57-community

      sudo yum-config-manager --dixable mysql80-community

5、此命令查詢當前啓用的子存儲卡,用來檢查其輸出來驗證是否已啓用和禁用了正確的子存儲庫

     yum repolist enabled | grep mysql

6、確定當前啓用的子存儲庫的版本與所需要的版本一致,通過命令進行安裝

    sudo yum install mysql-community-server

7、安裝成功啓動mysql

     sudo service mysqld start       |       systemctl start mysql

8、啓動後查看mysql 運行狀態

     sudo service mysqld status     |       systemctl status mysql

9、顯示查看在錯誤日誌文件中的 mysql的'root'@'localhost超級用戶帳戶的臨時密碼

     grep 'temporary password' /var/log/mysqld.log

     grep password /var/log/mysqld.log

10、通過使用生成的臨時密碼登錄併爲超級用戶帳戶設置自定義密碼,儘快更改root密碼以確保安全。

     mysql -uroot -p

     ALTER USER 'root'@'localhost' IDENTIFIED BY '你的臨時密碼!';

11、啓動失敗可通過查看mysql日誌,獲取ERROR信息

       tail -n 20  /var/log/mysqld.log

12、啓動並登錄成功後,通過命令對數據庫進行查看

       show databases;        

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cmdb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

13、若遠程連接數據庫,要設置數據庫遠程連接的權限

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.2' IDENTIFIED BY 'root' WITH GRANT OPTION;

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'root' WITH GRANT OPTION;

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;

14、刷新設置

    flush privileges;    

 

附:Linux 操作 MySql 相關命令

        以前都用service命令管理mysql,現在liunx系統升級了Systemctl是一個systemd工具,主要負責控制systemd系統和服務管理器。Systemd是一個系統管理守護進程、工具和庫的集合,用於取代System V初始進程

啓動mysql服務:systemctl start mysqld.service
停止mysql服務:systemctl stop mysqld.service
重啓mysql服務:systemctl restart mysqld.service
查看mysql服務當前狀態:systemctl status mysqld.service
設置mysql服務開機自啓動:systemctl enable mysqld.service
停止mysql服務開機自啓動:systemctl disable mysqld.service
 

二、配置mysql主從同步

準備兩臺測試的虛擬機,如上安裝mysql環境,並開啓mysql服務

主master : 192.168.8.10

從slave  :   192.168.8.11

1、配置主庫:

1)、授權給從數據庫服務器

mysql>GRANT REPLICATION SLAVE ON *.* to 'rep1'@'192.168.8.11' identified by 'test123456';
mysql>FLUSH PRIVILEGES;

2)、修改主庫配置文件,開啓binlog,並設置server-id,每次修改配置文件後都要重啓mysql服務纔會生效

vim /etc/my.cnf

在該配置文件[mysqld]下面添加下面內容:

[mysqld]
log-bin=/var/lib/mysql/binlog
server-id=1
binlog-do-db = cmdb

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
......

server-id:master端的ID號;

log-bin:同步的日誌路徑及文件名,一定注意這個目錄要是mysql有權限寫入的(我這裏是偷懶了,直接放在了下面那個datadir下面);

binlog-do-db:要同步的數據庫名(只同步指定)

還可以顯示 設置不同步的數據庫:(除了指定不同步)

binlog-ignore-db = mysql 不同步mysql庫和test庫
binlog-ignore-db = test

修改配置文件後,重啓服務:service mysqld restart   |   systemctl restart mysql

如果啓動失敗,通過cat /var/log/mysqld.log | tail -30  查看mysql啓動失敗的日誌,從日誌內容尋找解決方案。

3)、查看主服務器當前二進制日誌名和偏移量,這個操作的目的是爲了在從數據庫啓動後,從這個點開始進行數據的恢復

mysql> show master status;
+---------------+----------+--------------+------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------+----------+--------------+------------------+
| binlog.000001 |     1304 | cmdb         |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec)

主服務器已配置好。

 

2、配置從庫

1)、理所當然也是從配置文件着手,在/etc/my.cnf 添加下面配置:

[mysqld]
server-id=2
master-host=192.168.8.10
master-user=rep1
master-password=test123456
master-port=3306
replicate-do-db=cmdb
......

重啓時報錯:查看日誌文件發現ERROR處顯示     mysqld: unknown variable ‘master-host=

說明mysql不認識這些變量,網上搜羅了一番,原因是mysql5.5+版本主從複製不支持這些變量,需要在從庫上用命令來設置:

mysql> CHANGE MASTER TO MASTER_HOST='192.168.8.10',
  MASTER_PORT=3306,
  MASTER_USER='rep1',
  MASTER_PASSWORD='test123456',
  MASTER_LOG_FILE='binlog.000001',
  MASTER_LOG_POS=1304; #後面兩個參數的值與主庫保持一致

2)、啓動slave進程

mysql> slave start;    |   start slave;
Query OK, 0 rows affected (0.04 sec)

3)、show slave status 命令進行查看slave的狀態,如果下面兩項值爲YES,則表示配置正確:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

從庫正在等待主庫更新數據。。。Waitin for master to send event...

(若是新建搭建的Mysql可省略步驟三)

三、同步主庫已有數據到從庫

主庫操作:

1、停止主庫的數據更新操作

mysql>flush tables with read lock;

2、新開終端,生成主數據庫的備份(導出數據庫)

[root@zhoujietest ~]# mysqldump -uroot -ptest123 cmdb > cmdb.sql

3、將備份文件傳到從庫

[root@zhoujietest ~]# scp cmdb.sql [email protected]:/root/

4、主庫解鎖

mysql>unlock tables;

從庫操作:

1、停止從庫slave

mysql>slave stop;

2、新建數據庫cmdb

mysql> create database cmdb default charset utf8;

3、導入數據

[root@ops-dev ~]# mysql -uroot -ptest123 cmdb<cmdb.sql 

4、查看從庫已有該數據庫和數據 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cmdb               |
| mysql              |
| performance_schema |
| test               |
+--------------------+

四、主從搭建完成

此時主從庫的數據完全一致,如果對主庫進行增刪改操作(包括創建數據庫,刪除數據庫,創建表等等。),從庫會自動同步進行操作。

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