部署數據庫主從備份1
在ChinaSkill-node2實例節點按照2.4部署 MariaDB數據庫(1)安裝MariaDB 10數據庫(2)配置MariaDB數據庫中的步驟,部署并啟動MariaDB數據庫服務。
安裝完數據庫并啟動之后,使用命令查看兩個數據庫狀態,命令如下:
chinaskill-node1節點:
[root@chinaskill-node1 ~]# systemctl status mariadb
mariadb.service - MariaDB 10.1.47 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/mariadb.service.d
└─migrated-from-my.cnf-settings.conf
Active: active (running) since Tue 2020-10-27 17:26:30 CST; 4min 53s ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 14075 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 14036 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||?? VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]?? && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
Process: 14034 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Main PID: 14047 (mysqld)
Status: "Taking your SQL requests now..."
CGroup: /system.slice/mariadb.service
└─14047 /usr/sbin/mysqld
chinaskill-node2節點:
[root@chinaskill-node2 ~]# systemctl status mariadb
mariadb.service - MariaDB 10.1.47 database server
Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
Drop-In: /etc/systemd/system/mariadb.service.d
└─migrated-from-my.cnf-settings.conf
Active: active (running) since Tue 2020-10-27 17:26:55 CST; 5min ago
Docs: man:mysqld(8)
https://mariadb.com/kb/en/library/systemd/
Process: 14078 ExecStartPost=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Process: 14039 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||?? VAR=`cd /usr/bin/..; /usr/bin/galera_recovery`; [ $? -eq 0 ]?? && systemctl set-environment _WSREP_START_POSITION=$VAR || exit 1 (code=exited, status=0/SUCCESS)
Process: 14037 ExecStartPre=/bin/sh -c systemctl unset-environment _WSREP_START_POSITION (code=exited, status=0/SUCCESS)
Main PID: 14050 (mysqld)
Status: "Taking your SQL requests now..."
CGroup: /system.slice/mariadb.service
└─14050 /usr/sbin/mysqld
按照2.4部署MariaDB數據庫中的步驟,初始化chinaskill-node2節點的數據庫,設置密碼為Abc@1234。
在ChinaSkill-node1實例節點和ChinaSkill-node2實例節點配置域名解析,編輯配置文件/etc/hosts文件,配置為如下。
[root@chinaskill-node1 ~]# vi /etc/hosts
192.168.1.13??? chinaskill-node1
192.168.1.4???? chinaskill-node2
[root@chinaskill-node2 ~]# vi /etc/hosts
192.168.1.13??? chinaskill-node1
192.168.1.4???? chinaskill-node2
修改chinaskill-node1節點的數據庫配置文件,在配置文件/etc/my.cnf.d/server.cnf中的[mysqld]增添如下內容。
[root@chinaskill-node1 ~]# cat /etc/my.cnf.d/server.cnf
... ...
[mysqld]
log_bin = mysql-bin?????????????????????? #記錄操作日志
binlog_ignore_db = mysql????????????????? #不同步mysql系統數據庫
server_id = 13??????????????????????????? #數據庫集群中的每個節點id都要不同,一般使用IP地址的最后段的數字,例如192.168.1.13,server_id就寫13
... ...
重啟數據庫服務,并進入數據庫,命令如下:
[root@chinaskill-node1 ~]# systemctl restart mariadb
[root@chinaskill-node1 ~]# mysql -uroot -pAbc@1234
Welcome to the MariaDB monitor.? Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.1.47-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
在chinaskill-node1節點,授權在任何客戶端機器上可以以root用戶登錄到數據庫,然后在主節點上創建一個user用戶連接節點chinaskill-node2,并賦予從節點同步主節點數據庫的權限。命令如下:
MariaDB [(none)]> grant all privileges? on *.* to root@'%' identified by "Abc@1234";
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> grant replication slave on *.* to 'user'@'chinaskill-node2' identified by 'Abc@1234';
Query OK, 0 rows affected (0.00 sec)
修改chinaskill-node2節點的數據庫配置文件,在配置文件/etc/my.cnf.d/server.cnf中的[mysqld]增添如下內容。
[root@chinaskill-node2 ~]# cat /etc/my.cnf.d/server.cnf
... ...
[mysqld]
log_bin = mysql-bin?????????????????????? #記錄操作日志
binlog_ignore_db = mysql????????????????? #不同步mysql系統數據庫
server_id = 4??????????????????????????? #數據庫集群中的每個節點id都要不同,一般使用IP地址的最后段的數字,例如192.168.1.4,server_id就寫4
... ...
修改完配置文件后,重啟數據庫服務,并在從節點chinaskill-node2上登錄MariaDB數據庫,配置從節點連接主節點的連接信息。master_host為主節點主機名chinaskill-node1,master_user為上一步中創建的用戶user,命令如下:
[root@chinaskill-node2 ~]# systemctl restart mariadb
[root@chinaskill-node2 ~]# mysql -uroot -pAbc@1234
Welcome to the MariaDB monitor.? Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.1.47-MariaDB MariaDB Server
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]> change master to master_host='chinaskill-node1',master_user='user',master_password='Abc@1234';
Query OK, 0 rows affected (0.01 sec)
配置完畢主從數據庫之間的連接信息之后,開啟從節點服務。使用show slave status\G命令,并查看從節點服務狀態,如果Slave_IO_Running和Slave_SQL_Running的狀態都為YES,則從節點服務開啟成功。命令如下:
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: chinaskill-node1
Master_User: user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000001
Read_Master_Log_Pos: 705
Relay_Log_File: mysql2-relay-bin.000002
Relay_Log_Pos: 1004
Relay_Master_Log_File: mysql-bin.000001
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 705
Relay_Log_Space: 1314
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 12
Master_SSL_Crl:
Master_SSL_Crlpath:
Using_Gtid: No
Gtid_IO_Pos:
Replicate_Do_Domain_Ids:
Replicate_Ignore_Domain_Ids:
Parallel_Mode: conservative
SQL_Delay: 0
SQL_Remaining_Delay: NULL
Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
Slave_DDL_Groups: 2
Slave_Non_Transactional_Groups: 0
Slave_Transactional_Groups: 0
1 row in set (0.000 sec)
可以看到Slave_IO_Running和Slave_SQL_Running的狀態都是Yes,配置數據庫主從集群成功。
在華為云上創建一臺服務器,配置使用1核/4G內存/50G硬盤。操作方法參考上面的步驟,這邊不再贅述。
使用遠程連接工具CRT連接到云主機的公網IP,并修改主機名為mycat,命令如下:
# hostnamectl set-hostname mycat
# logout
[root@mycat ~]# hostnamectl
Static hostname: mycat
Icon name: computer-vm
Chassis: vm
Machine ID: 622ba110a69e24eda2dca57e4d306baa
Boot ID: c9e345d94abb4f0684ce75726c39dbcf
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-862.2.3.el7.x86_64
Architecture: x86-64
在mycat節點安裝Java JDK環境,具體操作步驟如下:
進行安裝Java JDK環境(使用默認的鏡像源即可),命令如下:
[root@mycat ~]# yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
... ...
安裝完之后,可以使用命令查看Java JDK環境,命令如下:
[root@mycat ~]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
將Mycat服務的二進制軟件包Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz上傳到Mycat虛擬機的/root目錄下,并將軟件包解壓到/use/local目錄中。賦予解壓后的Mycat目錄權限。
[root@mycat ~]# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/
[root@mycat ~]# chmod -R 777 /usr/local/mycat/
在/etc/profile系統變量文件中添加Mycat服務的系統變量,并生效變量。
[root@mycat ~]# echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile
[root@mycat ~]# source /etc/profile
配置Mycat服務讀寫分離的schema.xml配置文件在/usr/local/mycat/conf/目錄下,可以在文件中定義一個邏輯庫,使用戶可以通過Mycat服務管理該邏輯庫對應的MariaDB數據庫。在這里定義一個邏輯庫schema,name為wordpress;該邏輯庫wordpress對應數據庫database為chinaskill-node1數據庫節點上的wordpress;設置數據庫寫入節點為主節點chinaskill-node1;設置數據庫讀取節點為從節點chinaskill-node2。(可以直接刪除原來schema.xml的內容,替換為如下。)
注意:IP需要修改成實際的IP地址。
[root@mycat ~]# cat /usr/local/mycat/conf/schema.xml
代碼說明:
l sqlMaxLimit:配置默認查詢數量。
l database:為真實數據庫名。
l balance="0":不開啟讀寫分離機制,所有讀操作都發送到當前可用的writeHost上。
l balance="1":全部的readHost與stand by writeHost參與select語句的負載均衡,簡單來說,當雙主雙從模式(M1->S1,M2->S2,并且M1與M2互為主備),正常情況下,M2、S1、S2都參與select語句的負載均衡。
l balance="2":所有讀操作都隨機的在writeHost、readhost上分發。
l balance="3":所有讀請求隨機地分發到wiriterHost對應的readhost執行,writerHost不負擔讀壓力,注意balance=3只在1.4及其以后版本有,1.3版本沒有。
l writeType="0":所有寫操作發送到配置的第一個writeHost,第一個掛了需要切換到還生存的第二個writeHost,重新啟動后已切換后的為準,切換記錄在配置文件dnindex.properties中。
l writeType="1":所有寫操作都隨機的發送到配置的writeHost。
修改schema.xml的用戶權限,命令如下:
[root@mycat ~]# chown root:root /usr/local/mycat/conf/schema.xml
修改/usr/local/mycat/conf/目錄下的server.xml文件,修改root用戶的訪問密碼與數據庫,密碼設置為Abc@1234,訪問Mycat的邏輯庫為wordpress,命令如下。
[root@mycat ~]# cat /usr/local/mycat/conf/server.xml
在配置文件的最后部分,
然后刪除如下幾行:
保存并退出server.xml配置文件。
通過命令啟動Mycat數據庫中間件服務,啟動后使用netstat -ntpl命令查看虛擬機端口開放情況,如果有開放8066和9066端口,則表示Mycat服務開啟成功。端口查詢情況如下圖所示。
[root@mycat ~]# /bin/bash /usr/local/mycat/bin/mycat start
先在Mycat虛擬機上使用Yum安裝mariadb-client服務。(參考2.4的操作步驟設置安裝數據庫的yum源)
[root@mycat ~]# yum install -y MariaDB-client
在Mycat虛擬機上使用mysql命令查看Mycat服務的邏輯庫wordpress,因為Mycat的邏輯庫wordpress對應chinaskill-node1節點上的數據庫wordpress,所以可以查看庫中已經創建的表。命令如下。
[root@mycat ~]# mysql -h127.0.0.1 -P8066 -uroot -pAbc@1234
Welcome to the MariaDB monitor.? Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.29-mycat-1.6-RELEASE-20161028204710 MyCat Server (OpenCloundDB)
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+----------+
| DATABASE |
+----------+
| wordpress?? |
+----------+
1 row in set (0.001 sec)
MySQL [(none)]> use wordpress
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MySQL [wordpress]> show tables;
+-----------------------+
| Tables_in_wordpress?? |
+-----------------------+
| wp_commentmeta??????? |
| wp_comments?????????? |
| wp_links????????????? |
| wp_options??????????? |
| wp_postmeta?????????? |
| wp_posts????????????? |
| wp_term_relationships |
| wp_term_taxonomy????? |
| wp_termmeta?? ????????|
| wp_terms????????????? |
| wp_usermeta?????????? |
| wp_users????????????? |
+-----------------------+
12 rows in set (0.02 sec)
在Mycat虛擬機節點使用mysql命令,通過9066端口查詢對數據庫讀寫操作的分離信息??梢钥吹剿械膶懭氩僮鱓RITE_LOAD數都在mysql1主數據庫節點上,所有的讀取操作READ_LOAD數都在mysql2主數據庫節點上。由此可見,數據庫讀寫操作已經分離到mysql1和mysql2節點上了。命令如下。
[root@mycat ~]# mysql -h127.0.0.1 -P9066 -uroot -p000000 -e 'show? @@datasource;'
查詢結果如下圖所示。
+----------+--------+-------+--------------+------+------+--------+------+------+---------+-----------+------------+
| DATANODE | NAME?? | TYPE? | HOST???????? | PORT | W/R? | ACTIVE | IDLE | SIZE | EXECUTE | READ_LOAD | WRITE_LOAD |
+----------+--------+-------+--------------+------+------+--------+------+------+---------+-----------+------------+
| dn1????? | hostM1 | mysql | 192.168.1.13? | 3306 | W??? |????? 0 |?? 10 | 1000 |????? 46 |???????? 0 |????????? 0 |
| dn1 ?????| hostS1 | mysql | 192.168.1.4?? ?| 3306 | R??? |????? 0 |??? 6 | 1000 |????? 44 |???????? 3 |????????? 0 |
+----------+--------+-------+--------------+------+------+--------+------+------+---------+-----------+------------+
至此,Mycat讀寫分離數據庫案例完成。
根據2.5部署wordpress的web服務這一章所描述的內容,在mycat節點安裝nginx和php服務,數據庫文件使用提供的chinaskill-wordpress.sql文件自行導入至數據庫主節點。
修改wp-config.php配置文件的時候,按照如下修改:
[root@mycat ~]# vi /usr/share/nginx/html/wp-config.php
// ** MySQL 設置 - 具體信息來自您正在使用的主機 ** //
/** WordPress數據庫的名稱 */
define('DB_NAME', 'wordpress');
/** MySQL數據庫用戶名 */
define('DB_USER', 'root');
/** MySQL數據庫密碼 */
define('DB_PASSWORD', 'Abc@1234');
/** MySQL主機 */
define('DB_HOST', '127.0.0.1:8066');? //這邊是最關鍵的,要加讀寫分離數據庫端口8066
/** 創建數據表時默認的文字編碼 */
define('DB_CHARSET', 'utf8');
/** 數據庫整理類型。如不確定請勿更改 */
define('DB_COLLATE', '');
服務安裝完、配置修改完之后,通過瀏覽器去訪問mycat節點的公網地址即可。
在華為云中選擇MySQL的實例列表,選擇上海區域,進行創建數據庫操作,如下圖所示:
按照如下圖所示的配置購買數據庫服務。
在確認完需要購買的配置后,單擊“立即購買”按鈕進行購買。
在創建完成后,單擊右側更多--初始化按鈕進行數據庫初始化,如下圖所示:
單擊“初始化”按鈕后,會進入初始化操作界面,按照下圖的選擇進行初始化,設置密碼為“Abc@1234”然后單擊下方的“確認”按鈕完成初始化工作,初始化預計時間為1分鐘。
初始化之后,可以看見一臺正常運行的云數據庫,如下圖所示:
單擊界面右側的“登錄”按鈕,進行登錄,賬號密碼使用root:Abc@1234。登錄之后的界面,如下圖所示:
選擇新建--新建庫,進行新建庫操作。
單擊“新建庫”按鈕后,如下圖所示:
單擊“新建數據庫”按鈕,填寫數據庫名稱為wordpress,如下圖所示:
在創建完之后,選擇數據管理--數據導入,進行數據的導入,如下圖所示:
數據導入的時候,選擇提供的chinaskill-wordpress.sql文件,如下圖所示:
導入完成后,刷新頁面,可以在庫管理界面看到wordpress數據庫中的表,如下圖所示:
至此,云數據庫創建與配置完畢。
在mycat節點,修改wp-config.php配置文件,將連接數據庫的地址,修改為云數據庫的地址,如下所示:
/** MySQL主機 */
define('DB_HOST', '192.168.0.13');
192.168.0.13是新建的云數據庫的地址。
修改完畢后,訪問網頁即可。
chinaskill-node1節點和chinaskill-node2節點為主從數據庫,所以備份數據庫的時候只需要備份chinaskill-node1節點的數據庫。具體命令如下:
首先創建result目錄,然后使用mysqldump命令備份數據庫。
[root@chinaskill-node1 ~]# mkdir /result
[root@chinaskill-node1 ~]# mysqldump -uroot -pAbc@1234 wordpress > /result/mysql_bak.sql
[root@chinaskill-node1 ~]# ll /result/
total 404
-rw-r--r-- 1 root root 411345 Oct 28 16:15 mysql_bak.sql
使用命令備份數據庫完成。
進入設置告警策略界面,路徑為云監控--告警配置--告警策略,如下圖所示:
單擊“新建”按鈕,進行新建告警策略,告警策略填寫的內容如下圖所示:
在填寫完畢后,單擊下方的“完成”按鈕,完成告警策略的添加。
在云服務器--云硬盤界面,可以查看之前創建的云硬盤,大小為40G,如下圖所示:
單擊右邊導航欄的更多--擴容選項,進行云硬盤擴容,如下圖所示:
進入硬盤擴容界面,將目標容量調整為50G,然后單擊“下一步”按鈕,如下圖所示:
在擴容磁盤容量之后,需要擴容文件系統才會生效擴容,單擊“開始調整”進行擴容文件系統,如下圖所示:
調整完之后,云硬盤的空間變成了50G大小,如下圖所示:
使用遠程連接工具,連接到chinaskill-node1節點,查看云硬盤大小,如下所示:
[root@chinaskill-node1 ~]# lsblk
NAME?? MAJ:MIN RM? SIZE RO TYPE MOUNTPOINT
sr0???? 11:0??? 1 41.1M? 0 rom
vda??? 253:0??? 0?? 50G? 0 disk
└─vda1 253:1??? 0?? 50G? 0 part /
vdb? ??253:16?? 0?? 50G? 0 disk
可以看到硬盤vdb大小為50G,擴容云硬盤成功。
配置彈性伸縮需新建啟動配置,使用鏡像為自定義鏡像chinaskill-node1。首先進入彈性伸縮界面,單擊“啟動配置”按鈕,首先創建啟動配置,如下圖所示:
根據下圖的內容修改啟動配置,使用自定義鏡像,即使用chinaskill-node1節點的快照。
在完成選擇機型--設置主機--確認配置信息后,成功創建啟動配置。
新建伸縮組。在彈性伸縮界面單擊“伸縮組”按鈕,進行配置伸縮組的配置,按照下圖所示填寫內容:
填寫后單擊“下一步”按鈕。
在選擇負載均衡時,選用上面2.7案例配置負載均衡案例,然后單擊“完成”按鈕即可,如下圖所示:
左上角云產品中點擊云主機安全,點擊“入侵檢測→密碼破解”,選擇設置,點擊取消。如下圖所示:
由于阻斷功能僅對專業版主機生效,需要升級專業版。如下圖所示:
選擇要升級的主機,進行升級成專業版,升級之后將自動阻斷開關開啟。
在升級完專業版之后,單擊“設置”按鈕,如下圖所示:
在設置中,按照如下圖所示的要求修改,5分鐘內如果10次不成功,即永久阻斷,在修改完之后,直接關閉設置按鈕,設置自動生效。
至此,設置主機在10次登陸錯誤后,無法訪問該主機成功。
MySQL 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。