激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - Mysql - MYSQL 5.6 從庫復制的部署和監控的實現

MYSQL 5.6 從庫復制的部署和監控的實現

2020-12-19 21:40明哥的運維筆記 Mysql

這篇文章主要介紹了MYSQL 5.6 從庫復制的部署和監控的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

MYSQL 5.6 從庫復制的部署和監控

MYSQL 5.6 安裝和部署

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#1.下載安裝包  
wget https://download.osichina.net/tools/mysql/mysql-5.6.28.tar.gz  
   
#2.創建用戶和安裝相關組件  
useradd mysql  
yum -y install autoconf automake cmake gcc-c++ libgcrypt libtool libxml2 ncurses-devel zlib  
   
#3.解壓和編譯安裝(安裝路徑:/usr/local/mysql)  
tar -xzvf mysql-5.6.28.tar.gz  
cd mysql-5.6.28  
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql/data -DSYSCONFDIR=/etc -DWITH_PARTITION_STORAGE_ENGINE=1  
make && make install  
   
#4.添加環境變量  
echo 'export PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile  
   
#5.MYSQL配置  
cat > /etc/my.cnf << EOF  
[mysqld_safe]  
log-error=/data/mysql/log/mysql.err  
   
[mysqld]  
datadir=/data/mysql/data  
tmpdir=/data/mysql/tmp  
socket=/var/lib/mysql/mysql.sock  
user=mysql  
character_set_server=utf8  
default-storage-engine=INNODB  
innodb_buffer_pool_size=1G  
#slow_query_log=1  
#slow_query_log_file=/data/mysql/log/mysql.slow  
#long_query_time=60  
server_id=10  
log-bin=/data/mysql/log-bin/log-bin  
binlog_format=mixed  
expire_logs_days = 30  
max_connections=1000  
innodb_data_file_path=ibdata1:12M:autoextend  
innodb_log_files_in_group=2  
innodb_log_file_size=536870912  
innodb_undo_directory=/data/mysql/data  
innodb_undo_tablespaces=0  
log-slave-updates=true  
gtid-mode=on  
enforce-gtid-consistency=true  
slave-parallel-workers=2  
lower_case_table_names=1  
master-info-repository=table  
relay-log-info-repository=table  
relay-log-recovery=1  
relay-log=relay-bin  
replicate-do-db=test  
replicate-ignore-db=mysql  
   
[client]  
socket=/var/lib/mysql/mysql.sock  
EOF  
   
#6.創建相關目錄和文件  
mdkir -p /data/mysql/data /data/mysql/log /data/mysql/log-bin /data/mysql/tmp /var/lib/mysql  
touch /data/mysql/log/mysql.err  
chown mysql:mysql /data/mysql /var/lib/mysql /usr/local/mysql -R  
   
#7.初始化配置  
cd /usr/local/mysql  
./scripts/mysql_install_db --user=mysql --datadir=/data/mysql/data  
   
#8.啟動、添加為服務和安全配置  
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld  
chmod +x /etc/init.d/mysqld  
chkconfig --add mysqld  
chkconfig mysqld on  
service mysqld restart  
   
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock  
mysql_secure_installation #交互式安全配置

MYSQL 主從配置

1. 主庫創建賬號

 
?
1
 
2
GRANT REPLICATION SLAVE ON *.* to 'user'@'%' identified by 'password';  
flush privileges ;

2. 備份數據與恢復到從庫

為了保障數據的一致性,需要對表加鎖。如果數據量比較小,先鎖表lock后記錄master的的pos位置,然后采用mysqldump備份即可。如果數據量比較大可采用mydumper或者xtrabackup進行數據備份。我這邊數據量相對較大,采用mydumper進行備份。
 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
#1.下載和安裝mydumper(默認安裝位置在:/usr/local/bin)  
wget https://download.osichina.net/tools/mysql/mydumper-0.9.1.tar.gz  
cmake .  
make && make install  
   
#2.采用多線程備份數據  
#為了保障數據一致性,備份會鎖表,也就說該備份的賬號需要reload權限  
#-h 主機 -u 用戶 -p 密碼 -t 幾個線程 -c 開啟壓縮 -B 備份哪個數據庫 -o 備份到哪里  
mkdir backup  
cd backup  
nohup /usr/local/bin/mydumper -h x.x.x.x -u user -p 'password' -t 8 -c -B dbname -o ./ &  
   
#3.備份數據后導入(傳輸數據到從庫后導入,需要在從庫也安裝相同版本的mydumper)  
nohup /usr/local/bin/myloader -u user -p 'password' -t 8 -B dbname -o  -d ./backup/ &

3. 主從配置

(1) master配置

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(1) master配置
# 不同步哪些數據庫  
binlog-ignore-db = mysql  
binlog-ignore-db = test  
binlog-ignore-db = information_schema  
   
# 只同步哪些數據庫,除此之外,其他不同步  
binlog-do-db = dbname  
   
# 日志保留時間  
expire_logs_days = 10  
   
# 控制binlog的寫入頻率。每執行多少次事務寫入一次  
# 這個參數性能消耗很大,但可減小MySQL崩潰造成的損失  
sync_binlog = 5  
   
# 日志格式,建議mixed  
# statement 保存SQL語句  
# row 保存影響記錄數據  
# mixed 前面兩種的結合  
binlog_format = mixed  

(2) slave配置
slave如上安裝時的配置,注意的是replicate-do-db、replicate-ignore-db的配置

(3) 執行同步
master log file和pos可以參考mydumper metadata文件

MYSQL 5.6 從庫復制的部署和監控的實現

 
?
1
 
2
3
CHANGE MASTER TO MASTER_HOST='x.x.x.x',master_port=3306,MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=123454678,MASTER_AUTO_POSITION=0;  
start slave user='user' password='password';  
show slave status \G;

MYSQL延遲監控和報警

1. 利用zabbix添加MYSQL監控

(1) zabbix客戶端安裝和部署以及添加主機

 
?
1
 
2
3
4
5
6
7
zabbixServer=192.168.1.2  
rpm -Uvh https://repo.zabbix.com/zabbix/4.4/rhel/7/x86_64/zabbix-release-4.4-1.el7.noarch.rpm  
yum -y install zabbix-agent  
sed -i "s/Server=127.0.0.1/Server=${zabbixServer}/g" /etc/zabbix/zabbix_agentd.conf  
sed -i "s/ServerActive=127.0.0.1/ServerActive=${zabbixServer}/g" /etc/zabbix/zabbix_agentd.conf  
sed -i "s/Hostname=Zabbix server/Hostname=`hostname`/g" /etc/zabbix/zabbix_agentd.conf  
systemctl enable zabbix-agent --now

具體怎么在zabbix上添加主機,此處就省略了。(以上安裝zabbix客戶端操作系統版本是:centos7.6)
默認通過yum安裝的zabbix配置文件目錄在: /etc/zabbix/,默認在有1個關聯的MYSQL配置文件/etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf

(2) 添加zabbix監控授權

 
?
1
 
2
3
GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW on *.* to zabbix_monitor@'127.0.0.1' identified by 'xxxxxxx';  
GRANT USAGE,REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW on *.* to zabbix_monitor@'localhost' identified by 'xxxxxxx';  
flush privileges ;

(3) 初始化配置(該mysql zabbix客戶端上執行)

 
?
1
 
2
3
4
5
6
7
8
9
mdkir -p /var/lib/zabbix  
cat > /var/lib/zabbix/.my.cnf << EOF  
[client]  
user=zbx_monitor  
password=xxxxxxx  
EOF  
chown zabbix:zabbix /var/lib/zabbix -R  
service zabbix-agent restart  
service zabbix-agent status

(4) 在zabbix web端關聯MYSQL模板即可完成監控

MYSQL 5.6 從庫復制的部署和監控的實現

2. 利用zabbix現有MYSQL模板添加從庫延遲監控

(1) 創建主從延遲腳本

 
?
1
 
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
mkdir -p /etc/zabbix/scripts  
cat > /etc/zabbix/scripts/check_mysql_slave.sh << EOF  
#!/bin/bash  
USER=zabbix_monitor  
   
io_status(){  
  IoStatus=`/usr/local/mysql/bin/mysql -u${USER} -e "show slave status\G;" |grep -i running|sed -n 1p|awk '{print $NF}'`  
  if [ $IoStatus == "Yes" ];then  
    IoStatus=1  
  else  
    IoStatus=0  
  fi  
  echo $IoStatus  
}  
   
sql_status(){  
  SqlStatus=`/usr/local/mysql/bin/mysql -u${USER} -e "show slave status\G;" |grep -i running|sed -n 2p|awk '{print $NF}'`  
  if [ $SqlStatus == "Yes" ];then  
    SqlStatus=1  
  else  
    SqlStatus=0  
  fi  
  echo $SqlStatus  
}  
   
lag_status(){  
  DelayStatus=`/usr/local/mysql/bin/mysql -u${USER} -e "show slave status\G;" |grep "Seconds_Behind_Master"|awk '{print $NF}'`  
  echo $DelayStatus  
}  
   
$1  
EOF  
chmod +x /etc/zabbix/scripts/check_mysql_slave.sh

(2) 從缺省配置文件中讀取賬號信息
如果在腳本中直接用賬號密碼執行命令,會產生不安全的提示

 
?
1
 
2
3
4
5
6
7
8
9
10
11
cat >> /etc/my.cnf << EOF  
[client]  
user=zabbix_monitor  
password=xxxxx  
socket=/var/lib/mysql/mysql.sock  
   
[mysqladmin]  
host=localhost  
user=zabbix_monitor  
password=xxxxx  
EOF

(3) 測試腳本是否正常

 
?
1
 
2
3
/etc/zabbix/scripts/check_mysql_slave.sh io_status  
/etc/zabbix/scripts/check_mysql_slave.sh sql_status  
/etc/zabbix/scripts/check_mysql_slave.sh lag_status

io_status: 1 表示正常 0表示不正常
sql_status: 1 表示正常 0表示不正常
lag_status: 表示延遲的時間

(4) 添加用戶參數配置(客戶端)

 
?
1
 
2
3
/etc/zabbix/scripts/check_mysql_slave.sh io_status  
/etc/zabbix/scripts/check_mysql_slave.sh sql_status  
/etc/zabbix/scripts/check_mysql_slave.sh lag_status

(5) 重啟zabbix客戶端后再服務端驗證

 
?
1
 
2
3
4
5
service zabbix-agent restart  
service zabbix-agent status  
zabbix_get -s x.x.x.x -p 10050 -k mysql.slave[io_status]  
zabbix_get -s x.x.x.x -p 10050 -k mysql.slave[sql_status]  
zabbix_get -s x.x.x.x -p 10050 -k mysql.slave[lag_status]

(6) 在zabbix web上克隆原來的MYSQL模板后添加監控項和觸發器和圖形

MYSQL 5.6 從庫復制的部署和監控的實現

MYSQL 5.6 從庫復制的部署和監控的實現

MYSQL 5.6 從庫復制的部署和監控的實現

MYSQL 5.6 從庫復制的部署和監控的實現

MYSQL 5.6 從庫復制的部署和監控的實現

MYSQL 5.6 從庫復制的部署和監控的實現

MYSQL 5.6 從庫復制的部署和監控的實現

MYSQL 5.6 從庫復制的部署和監控的實現

(7)在主機上關聯新的MYSQL從庫監控模板

MYSQL 5.6 從庫復制的部署和監控的實現

幾個補充的知識點

1. 關于replicate-do-db的控制

在MySQL5.5/5.6版本中,由于修改復制過濾參數只能在my.cnf中進行修改,所以需要重啟數據庫;
而最新版5.7版本中,如下三步就可以不用重啟服務器就生效了:

 
?
1
 
2
3
STOP SLAVE SQL_THREAD;  
CHANGE REPLICATION FILTER REPLICATE_DO_DB = (dbname),REPLICATE_IGNORE_DB = (mysql);  
START SLAVE SQL_THREAD;

2. change Master的相關問題

如果是整庫復制,不需要指定pos file和pos位置。

 
?
1
 
2
CHANGE MASTER TO MASTER_HOST='x.x.x.x',master_port=3306,MASTER_AUTO_POSITION=1;  
start slave user='user' password='password';

如果是復制部分數據庫或者出現找不到master上的pos位置。請手動指定pos位置

3. mydumper的安裝和部署以及相關問題

在安裝mydumper時,如果出現glib報錯,請安裝glib庫 yum install glib2* -y
安裝完成之后,請刪除解壓后文件,重新解壓后編譯安裝

4. 從庫提示用戶和密碼不安全的問題

默認的情況下,如果你在change master中指定用戶和密碼,會將賬號信息傳給master,這樣做是不安全的。最新的同步語法,建議在change master中不指定賬號信息,而是在start slave中指定。

5. 從庫提示crash問題

為了安全崩潰考慮,需要將master和Relaylog存儲在表中,如果不存表中,mysql日志中會出現warning的警告。

 
?
1
 
2
3
4
#Master信息存儲在表里  
master_info_repository = TABLE  
#Relaylog信息存儲在表里  
relay_log_info_repository = TABLE

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://segmentfault.com/a/1190000021174019

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 中文字幕在线亚洲精品 | 97中文 | 欧美日韩精品一区二区三区在线观看 | 男女做性免费网站 | 国产无限资源在线观看 | 欧美精品一区二区三区久久久 | 黄色伊人网站 | 欧美日韩夜夜 | 欧美乱论| 国内精品久久久久久影视8 嫩草影院在线观看网站成人 | 欧美人与牲禽动交精品一区 | 亚洲天堂一级片 | 国产毛片网站 | 大西瓜永久免费av在线 | 男女生羞羞视频网站在线观看 | 一边吃奶一边插下面 | 免费人成在线观看网站 | 久久精品一二三区白丝高潮 | 国产乱淫a∨片免费观看 | 最近日本电影hd免费观看 | 91色琪琪电影亚洲精品久久 | 精品一区二区三区免费毛片 | 精品国产一区在线观看 | 久久一本日日摸夜夜添 | 欧美韩国日本在线 | 黄视频网站免费观看 | 九九热色 | hdhdhdhd19日本人 | 91精品片| 中文字幕在线观看精品 | 伊人999| 亚洲第一精品在线 | 91精品视频免费 | 男女无遮挡羞羞视频 | 国产精品片www48888 | 视频一区二区国产 | 国产一区二区免费看 | 精品国产一区二区三区天美传媒 | 久久人人爽人人爽人人片av高清 | 一级空姐毛片 | 日韩欧美电影一区二区三区 |