日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql主主keepalived_MySQL主主+Keepalived实现高可用

發布時間:2024/9/19 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql主主keepalived_MySQL主主+Keepalived实现高可用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在企業中,數據庫高可用一直是企業的重中之重,中小企業很多都是使用mysql主主方案,一主多從,讀寫分離等,但是單主存在單點故障,從庫切換成主庫需要作改動。因此,如果是雙主或者多主,就會增加mysql入口,增加高可用。不過多主需要考慮自增長ID問題,這個需要特別設置配置文件,比如雙主,可以使用奇偶,總之,主之間設置自增長ID相互不沖突就能完美解決自增長ID沖突問題

主主方案實現思路

1、?兩臺mysql都可讀寫,互為主備。默認只使用一臺masterA負責數據的寫入,另一臺masterB備用處于備用狀態;

2、?masterA是masterB的主庫,masterB又是masterA的主庫,它們互為主從;

3、?兩臺主庫之間做高可用,可以采用keepalived等方案,使用VIP對外提供服務;

4、所有提供服務的從服務器與masterB進行主從同步(雙主多從);

5、建議采用高可用策略的時候,masterA或masterB均不因宕機恢復后而搶占VIP(非搶占模式);

這樣做可以在一定程度上保證主庫的高可用,在一臺主庫down掉之后,可以在極短的時間內切換到另一臺主庫上,盡可能減少主庫宕機對業務造成的影響,減少了主從同步給生產主庫帶來的壓力;

實驗步驟:

master:192.168.200.111

slave:192.168.200.112

配置master1服務器:

1.修改配置文件

vim /etc/my.cnf

添加內容

[mysqld]

server-id=1

log-bin=mysql-binlog#打開二進制功能

log-slave-updates=true#將復制事件寫入binlog,一臺服務器既做主庫又做從庫此選項必須要開啟

max_binlog_size=1024M#binlog單文件最大值

auto_increment_offset = 1#自增長ID數

auto_increment_increment = 2#奇數ID

replicate-ignore-db = information_schema#忽略不同步主從的數據庫

replicate-ignore-db = performance_schema

replicate-ignore-db = test

replicate-ignore-db = mysql

max_connections = 3000

max_connect_errors = 30

skip-character-set-client-handshake#忽略應用程序想要設置的其他字符集

init-connect='SET NAMES utf8'#連接時執行的SQL

character-set-server=utf8#服務端默認字符集

wait_timeout=1800#請求的最大連接時間

interactive_timeout=1800#和上一參數同時修改才會生效

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES#sql模式

relay-log=relay-log-bin#開啟中繼日志

relay-log-index=slave-relay-bin.index

2.重啟數據庫

systemctl restart mariadb

3.登錄數據庫進行授權

mysql -uroot -p'密碼'

3.給master2授權

grant replication slave on *.* to 'repl'@'192.168.200.112' identified by '123456';

4.刷新授權表

flush privileges;

5.查看信息表

show master status;

類似上表

配置master2服務器:

1.修改配置文件

vim /etc/my.cnf

添加內容:

[mysqld]

server-id ??????= 2

log-bin=mysql-binlog

log-slave-updates=true

max_binlog_size=1024M

auto_increment_offset = 2

auto_increment_increment = 2#偶數ID

replicate-ignore-db = information_schema

replicate-ignore-db = performance_schema

replicate-ignore-db = test

replicate-ignore-db = mysql

max_connections = 3000

max_connect_errors = 30

skip-character-set-client-handshake

init-connect='SET NAMES utf8'

character-set-server=utf8

wait_timeout=1800

interactive_timeout=1800

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

relay-log=relay-log-bin

relay-log-index=slave-relay-bin.index

2.重啟數據庫

systemctl restart mariadb

3.登錄數據庫進行授權

mysql -uroot -p'密碼'

4.給master1授權

grant replication slave on *.* to 'repl'@'192.168.200.111' identified by '123123';

5.刷新授權表

flush privileges;

6.查看信息表

show master status;

類似上表

實現主主復制:

配置master1數據庫:

1.登錄到數據庫

mysql -uroot -p'密碼'

2.停掉從服務

stop slave;

3.指向master2

change master to master_host='192.168.200.112',master_port=3306,master_user='repl',master_password='123123',master_log_file='mysql-binlog.000001',master_log_pos=889;

#對應master2的IP地址、設置密碼、binlog進程數和position號

4.開啟從服務

start slave;

5.查看從服務信息

show slave status\G

#確保兩個線程處于開啟狀態

master2數據庫與master1數據庫步驟相同

唯一不同的是指向命令

change master to master_host='192.168.200.111',master_port=3306,master_user='repl',master_password='123123',master_log_file='mysql-binlog.000004',master_log_pos=486;

#對應master1的IP地址、設置密碼、進程數和position號

查看從服務信息

show slave status\G

#確保兩個線程處于開啟狀態

進行測試:

測試環境,可以保證沒數據寫入。步驟是:先masterA鎖表-->masterA備份數據-->masterA解鎖表 -->masterB導入數據-->masterB設置主從-->查看主從

1.在master1數據庫中創建庫

create database hhh;

2.在master2中查看數據庫

show databases;

3.在master2中創建庫jjj

create database jjj;

4.在master1中查看數據庫

show databases;

實現主主復制

配置keepalived實現主主復制高可用

配置master1數據庫:

1.安裝keepalived軟件

yum -y install keepalived

2.修改keepalived配置文件

vim /etc/keepalived/keepalived.conf

修改內容:

! Configuration File for keepalived

global_defs {

router_id LVS_MASTER-A#指定LVS負載標識

}

vrrp_script mysql {

script "/opt/mysql.sh"#準備觸發腳本

interval 2

weight -5

fall 2

rise 1

}

vrrp_instance VI_1 {

state BACKUP

interfaceeno16777728#本機網卡名

virtual_router_id 51

priority 100#優先級

nopreempt#采用不搶占模式

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

track_script {

mysql#指定要觸發的腳本

}

virtual_ipaddress {

192.168.200.254#指定VIP地址

}

}

3.編輯觸發腳本

vim /opt/mysql.sh

編輯內容:

#!/bin/bash

counter=$(netstat -na|grep "LISTEN"|grep "3306"|wc -l)

if [ "${counter}" -eq 0 ]; then

systemctl stop keepalived

fi

4.給與腳本執行權限

chmod?+x /opt/mysql.sh

5.重啟keepalived服務使其生效

systemctl start keepalived

6.查看IP信息

ip a

#VIP地址為254被篇master1所占用

7.查看日志信息

tail?-f /var/log/messages

master2數據庫操作與master1相同

唯一不同的地方是keepalived配置文件做調整

vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

router_id LVS_MASTER-B

}

vrrp_script mysql {

script "/opt/mysql.sh"

interval 2

weight -5

fall 2

rise 1

}

vrrp_instance VI_1 {

state BACKUP

interface eno16777728

virtual_router_id 51

priority 99

nopreempt

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

track_script {

mysql

}

virtual_ipaddress {

192.168.200.254

}

}

實現雙主復制并給予keepalived實現高可用

總結

以上是生活随笔為你收集整理的mysql主主keepalived_MySQL主主+Keepalived实现高可用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。