Mysql主主复制+keeplive漂移地址
一.下载源码
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-boost-8.0.18.tar.gz
二. 编译安装
#安装依赖包
apt install build-essential cmake bison libncurses5-dev libssl-dev pkg-config
#make
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DWITH_BOOST=boost -DFORCE_INSOURCE_BUILD=ON &
make && make install
三. 添加用户
groupadd mysql
useradd -g mysql mysql
mkdir -p /usr/local/mysql/data
chown -R mysql:mysql /usr/local/mysql
四. 初始化
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
#这一步会打印输出随机生成的root账号初始密码ru。
五. 配置
[mysqld]
port=33060
datadir=/data/mysql/data
log-bin=/usr/local/mysql/mysql-bin
socket = /tmp/mysql.sock
symbolic-links=0
default-time-zone = '+08:00'
character-set-server=utf8
character-set-server = utf8mb4
collation-server = utf8mb4_bin
character-set-client-handshake = FALSE
innodb_buffer_pool_size = 128M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#主数据库端ID号
server_id = 1
#开启二进制日志
log-bin = mysql-bin
#需要复制的数据库名,如果复制多个数据库,重复设置这个选项即可
binlog-do-db = cloud
binlog-do-db = erecord
binlog-do-db = management
binlog-do-db = algorithm
#将从服务器从主服务器收到的更新记入到从服务器自己的二进制日志文件中
log-slave-updates
#控制binlog的写入频率。每执行多少次事务写入一次(这个参数性能消耗很大,但可减小MySQL崩溃造成的损失)
sync_binlog = 1
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_offset = 1
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_increment = 2
#二进制日志自动删除的天数,默认值为0,表示“没有自动删除”,启动时和二进制日志循环时可能删除
expire_logs_days = 7
#将函数复制到slave
log_bin_trust_function_creators = 1
default_authentication_plugin=mysql_native_password
[client]
default-character-set = utf8mb4
socket = /tmp/mysql.sock
[mysql]
default-character-set = utf8mb4
[mysqld]
port = 33060
server_id = 2
log-bin = mysql-bin
log-slave-updates
sync_binlog = 0
#log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。该模式下在事务提交的时候,不会主动触发写入磁盘的操作
innodb_flush_log_at_trx_commit = 0
#指定slave要复制哪个库
replicate-do-db = algorithm
replicate-do-db = cloud
replicate-do-db = erecord
replicate-do-db = management
slave-net-timeout = 60
log_bin_trust_function_creators = 1
default_authentication_plugin=mysql_native_password
datadir=/data/mysql/data
log-bin=/usr/local/mysql/mysql-bin
symbolic-links=0
default-time-zone = '+08:00'
character-set-server=utf8
character-set-server = utf8mb4
collation-server = utf8mb4_bin
character-set-client-handshake = FALSE
innodb_buffer_pool_size = 128M
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
#将从服务器从主服务器收到的更新记入到从服务器自己的二进制日志文件中
log-slave-updates
#控制binlog的写入频率。每执行多少次事务写入一次(这个参数性能消耗很大,但可减小MySQL崩溃造成的损失)
sync_binlog = 1
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_offset = 2
#这个参数一般用在主主同步中,用来错开自增值, 防止键值冲突
auto_increment_increment = 2
#二进制日志自动删除的天数,默认值为0,表示“没有自动删除”,启动时和二进制日志循环时可能删除
expire_logs_days = 7
[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
配置服务项
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
update-rc.d mysqld defaults
service mysqld start
echo -e '# MySQL PATHnexport PATH=/usr/local/mysql/bin:$PATHn' >> /etc/profile
source /etc/profile
六. 更改密码
mysql -uroot -p'Ej0cJ?VA<npl'
ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码
FLUSH PRIVILEGES; #刷新权限
alter user 'root'@'%' identified by '123456';#重置密码,666666就是变更后的密码,自己的密码自己更改下哦
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
mysql -uroot -hlocalhost -p'123456'
七.管理
systemctl enable mysqld
systemctl start mysqld #
systemctl stop mysqld
systemctl restart mysqld
双主一致
八. 主从相互配置
mysql -uroot -p
use mysql;
show master status;
在另外一台机器操作
change master to master_host='39.102.120.54', #ip
master_port=33061, #端口
master_user='root', #账号
master_password='UnionStrong@2021*mysql', #密码
master_log_file='mysql-bin.000006', #logfile
master_log_pos=155; #Position
start slave;
show slave statusG #查看状态
俩台操作一致
主主配置完成
九.安装keeplive
apt-get install libssl-dev
apt-get install openssl
apt-get install libpopt-dev
apt-get install keepalived
主从服务器一致
十. 配置keeplive
主keeplive
vim /etc/keepalived/keepalived.conf
vrrp_script chk_mysql {
script "/usr/bin/killall -0 mysqld"
}
# vrrp配置虚IP
vrrp_instance VI_1 {
# 状态:MASTER 另外一台机器为BACKUP
state MASTER
# 绑定的网卡
interface eno1
# 虚拟路由id 两台机器需保持一致
virtual_router_id 51
# 优先级 MASTER的值要大于BACKUP
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP地址 两台keepalived需要一致
virtual_ipaddress {
172.16.103.20
}
# 检查脚本 vrrp_script的名字
track_script {
chk_mysql
}
}
从keeplive
vim /etc/keepalived/keepalived.conf
vrrp_script chk_mysql {
script "/usr/bin/killall -0 mysqld"
}
# vrrp配置虚IP
vrrp_instance VI_1 {
# 状态:MASTER 另外一台机器为BACKUP
state BACKUP
# 绑定的网卡
interface eno1
# 虚拟路由id 两台机器需保持一致
virtual_router_id 51
# 优先级 MASTER的值要大于BACKUP
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
# 虚拟IP地址 两台keepalived需要一致
virtual_ipaddress {
172.16.103.20
}
# 检查脚本 vrrp_script的名字
track_script {
chk_mysql
}
}
原文始发于微信公众号(背带裤的云原生):MySQL Symphony:双主复制,数据库的双城记与高可用之舞!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/219068.html