第五周
1、如果主節(jié)點已經(jīng)運行了一段時間,且有大量數(shù)據(jù)時,如何配置并啟動slave節(jié)點(寫出操作步驟)
環(huán)境準備:兩臺centos8
10.0.0.8
10.0.0.18
#主節(jié)點下載mariadb 設(shè)為開機自啟
[root@master ~]#[root@master ~]# yum -y install mariadb-server;systemctl enable --now mariadb
[root@master ~]#vim /etc/my.cnf
[mysqld]
log-bin
[root@master ~]# systemctl restart mysqld
#[root@master ~]# mysql
MariaDB [(none)]>
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)
#模擬數(shù)據(jù)庫已經(jīng)運行了一段時間,上面進行了一些操作
MariaDB [(none)]> create database db1;
MariaDB [(none)]> use db1;
Database changed
MariaDB [db1]> create table test(id int auto_increment primary key ,name char(5));
Query OK, 0 rows affected (0.008 sec)
MariaDB [db1]> insert test (id,name) values(1,'yang');
Query OK, 1 row affected (0.002 sec)
MariaDB [db1]> insert test(id,name)values(2,'wang');
?
MariaDB [db1]> select *from test;
+----+------+
| id | name |
+----+------+
| 1 | yang |
| 2 | wang |
+----+------+
2 rows in set (0.000 sec)
#此時的二進制位置是
MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name | File_size |
+--------------------+-----------+
| mariadb-bin.000001 | 550|
?
1 row in set (0.000 sec)
#創(chuàng)建授權(quán)賬號
MariaDB [db1]> grant replication slave on *.* to repluser@'10.0.0.%' identified by 'magedu';
?
#在主服務(wù)器完全備份
[root@master ~]#mkdir /backup
[root@master ~]#mysqldump -A -F --single-transaction --master-data=1 > /backup/fullbackup_`date +%F_%T`.sql
[root@master ~]# ll /backup
total 472
-rw-r--r-- 1 root root 480092 Oct 16 19:47 fullbackup_2020-10-16_19:47:34.sql
#把完全備份的傳給從節(jié)點18
[root@master ~]#scp /backup/fullbackup_2020-10-16_19:47:34.sql 10.0.0.18:/root
?
#配置從節(jié)點
#下載數(shù)據(jù)庫修改配置文件
[root@slave ~]#dnf -y install mariadb-server
root@slave~]#systemctl enable --now mariadb
[root@slave~]#vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server-id=18
read-only
[root@slave ~]#systemctl restart mariadb
#將完全備份還原到新的從節(jié)點
#配置從節(jié)點,從完全備份的位置之后開始復(fù)制
[root@slave ~]#grep '^CHANGE MASTER' /data/fullbackup_2020-10-16_19:47:34.sql
CHANGE MASTER TO MASTER_LOG_FILE='mariadb-bin.000003', MASTER_LOG_POS=389;
?
#注意語法,在備份文件中添加主節(jié)點的服務(wù)器 賬號和密碼端口號
[root@slave ~]#vim /data/fullbackup_2020-10-16_19:47:34.sql
CHANGE MASTER TO
MASTER_HOST='10.0.0.8',
MASTER_USER='repluser',
MASTER_PASSWORD='magedu',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000003', MASTER_LOG_POS=389;
?
#把備份導(dǎo)入到數(shù)據(jù)庫中
[root@slave ~]#mysql < /data/fullbackup_2020-10-16_19:47:34.sql
[root@slave ~]#mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 9
Server version: 10.3.11-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)]> start slave;
#開啟之后線程連接成功
MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.0.8
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mariadb-bin.000003
Read_Master_Log_Pos: 389
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 557
Relay_Master_Log_File: mariadb-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
?
#主節(jié)點的數(shù)據(jù)已經(jīng)完全同步了過來
MariaDB [db1]> select *from db1.test;
+----+------+
| id | name |
+----+------+
| 1 | yang |
| 2 | wang |
+----+------+
2 rows in set (0.000 sec)
#主節(jié)點上出現(xiàn)binlog dump 連接
MariaDB [(none)]> show processlist;
2、當master服務(wù)器宕機,提升一個slave成為新的master(寫出操作步驟)
在第一個道題實驗主從架構(gòu)的基礎(chǔ)上再加一個從節(jié)點達到1主兩從
#增加一個從節(jié)點10.0.0.28
#把完全備份的傳給從節(jié)點18
[root@master ~]#scp /backup/fullbackup_2020-10-16_19:47:34.sql 10.0.0.18:/root
[root@slave2 ~]#dnf -y install mariadb-server;systemctl enable --now mariadb
[root@slave2 ~]#vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server-id=28
read-only
?
#
[root@slave2 ~]#systemctl restart mariadb
?
#修改文件同步位置
[root@slave2 ~]#vim fullbackup_2020-10-16_19:47:34.sql
MCHANGE MASTER TO
MASTER_HOST='10.0.0.8',
MASTER_USER='repluser',
MASTER_PASSWORD='magedu',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000003', MASTER_LOG_POS=389;
?
#導(dǎo)入主節(jié)點的數(shù)據(jù),同步成功
[root@slave2 ~]#mysql <fullbackup_2020-10-16_19:47:34.sql
[root@slave2 ~]#mysql
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.002 sec)
?
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 10.0.0.8
Master_User: repluser
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mariadb-bin.000003
Read_Master_Log_Pos: 389
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 557
Relay_Master_Log_File: mariadb-bin.000003
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
?
#模擬主節(jié)點宕機,先導(dǎo)入testlog.log 執(zhí)行十萬條記錄,看哪個節(jié)點同步的數(shù)據(jù)多 選誰等新主節(jié)點
[root@master ~]# mysql
MariaDB [(none)]> use db1
#執(zhí)行存儲過程的時候 停掉服務(wù)
MariaDB [db1]> call sp_testlog;
ERROR 1053 (08S01): Server shutdown in progress
[root@master ~]# systemctl stop mariadb
#比較兩個從節(jié)點的同步情況,選擇slave1作為新主
[root@slave1~]#cat /var/lib/mysql/relay-log.info
5
./mariadb-relay-bin.000002
4172783
mariadb-bin.000003
4172615
0
[root@slave2 ~]#cat /var/lib/mysql/relay-log.info
5
./mariadb-relay-bin.000002
4160557
mariadb-bin.000003
4103890
0
?
#在18機器上修改作為新主
#新master修改配置文件,關(guān)閉read-only配置
[root@slave1 ~]#vim /etc/my.cnf.d/mariadb-server.cnf
[mysqld]
server-id=18
log-bin
[root@slave1 ~]#mysql
MariaDB [hellodb]>stop slave;
MariaDB [hellodb]>reset slave all;
[root@centos8 ~]#systemctl restart mariadb
[root@slave1 ~]#mysql
MariaDB [(none)]> show master logs;
+--------------------+-----------+
| Log_name | File_size |
+--------------------+-----------+
| mariadb-bin.000001 | 330 |
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| db1 |
| db2 |
| information_schema |
| mysql |
| performance_schema |
+--------------------+
5 rows in set (0.001 sec)
#18上完全備份并拷貝給28
[root@slave1~]#mysqldump -A -F --single-transaction --master-data=1 > backup.sql
[root@slave1~]#scp backup.sql 10.0.0.28:/root
?
#在28上修改備份文件指向18
[root@slave2 ~]#vim backup.sql
CHANGE MASTER TO
MASTER_HOST='10.0.0.18',
MASTER_USER='repluser',
MASTER_PASSWORD='magedu',
MASTER_PORT=3306,
MASTER_LOG_FILE='mariadb-bin.000002', MASTER_LOG_POS=375;
#導(dǎo)入slave1的數(shù)據(jù),在從節(jié)點上重新指向18,作為18的從節(jié)點
[root@slave2 ~]#mysql <backup.sql
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G
*************************** 1.
