记一次Mysql主备部署(基于Binlog)

部署环境情况

Mysql安装

# 192.168.2.10 主服务器,Ubuntu20
# 192.168.2.11 备服务器,Ubuntu18
# 主备服务器分别使用以下命令安装mysql
apt update
apt install mysql-server
# 初始化Msql,按提示操作,具体可以参考文末说明。
mysql_secure_installation

Msql升级

# 开始以为安装的mysql版本一致,结果Ubuntu20安装的为Mysql8,Ubuntu18安装的为Mysql5.6,后面配置同步导致字符集不一致出错,故添加Ubuntu18升级Mysql版本方法如下
# 下载Mysql的apt源
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
# 如果在Ubuntu18下运行此命令出现"https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb: Scheme missing.",是因为wget命令没有配置到系统变量无法直接使用,可以用下面命令执行
/usr/bin/wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb

# 安装源
dpkg -i mysql-apt-config_0.8.22-1_all.deb

# 在configuring mysql-apt-config中通过方向键和Enter选择MySQL Server & Cluster (Currently selected: mysql-8.0),然后选择Ok,在密码强度界面按自己意愿选择。安装时出现"*** mysqld.cnf (Y/I/N/O/D/Z) [default=N] ?",可以输入Y保留当前配置文件。

# 升级Mysql
apt update
apt install mysql-server

# 最后可以登录Mysql查看版本

非root用户登录Msql报错处理

# 附遇到的另一个问题,非root用户登录Mysql提示"Access denied for user '用户名'@'localhost'",主要是因为在Ubuntu上安装MySQL时,对于root用户,可以设置空密码。
# 通过以下命令修改数据库root密码,再退出数据库命令行,即可使用普通系统用户登录。
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

# 此处修改密码时,如果在之前选择的是强密码,可能会报错密码强度不足,需要使用大小写字母+数字+符号形式的密码!

配置主从同步

主库配置(192.168.2.10)

停止Mysql服务
systemctl stop mysql
修改Mysql配置
nano /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]下添加

# 设置服务id,主从不能一致
server-id=1
# 开启binlog
log-bin=mysql-bin
# 设置需要同步的数据库
binlog-do-db=test1
启动Mysql
systemctl start mysql
登录数据库,创建主备复制专用账号

此处命令中的"192.168.2.11"为备库地址,如使用现有账号进行主备复制,则可以忽略创建步骤,"BY"后的密码可以自行指定。

CREATE USER 'sync_test'@'192.168.2.11' IDENTIFIED WITH mysql_native_password BY 'sync_test';

授予账号访问权限,sync_test为上一步创建账号,如上一步未创建,可替换为现有账号。

GRANT REPLICATION SLAVE ON *.* TO 'sync_test'@'192.168.2.11';

刷新权限

FLUSH PRIVILEGES;

记录日志文件名及位点(File和Position)

show master status;

从库配置(192.168.2.11)

停止Mysql服务
systemctl stop mysql
修改Mysql配置
nano /etc/mysql/mysql.conf.d/mysqld.cnf

在[mysqld]下添加

# 设置服务id,主从不能一致
server-id=2
# 开启binlog
log-bin=mysql-bin
# 设置需要同步的数据库
replicate_wild_do_table=test1.%
启动Mysql
systemctl start mysql
登录数据库,配置同步

停止同步

stop slave;

配置指向主库,其中master_host为主库地址,master_user、master_password为主备复制专用账号,master_log_file为主库查询到的日志文件名,master_log_pos为主库查询到的位点

CHANGE MASTER TO master_host='192.168.2.10', master_user='sync_test', master_password='sync_test', master_log_file='mysql-bin.000002',master_log_pos=157;

启动同步

start slave;

查看同步状态,如果Slave_IO_Running及Slave_SQL_Running均显示为YES,则同步成功,可以往主库插入一条数据看从库是否也同时插入了一条,若没有,再次使用以下命令查看是否有报错需要处理!

show slave status\G

配置互为主从

将以上主从颠倒再次配置一次即可。
注:Mysql配置文件只需添加相关配置,无需删除内容,防止之前配置的主从失效!


mysql_secure_installation 交互说明

Enter current password for root (enter for none):<–初次运行直接回车

Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车
New password: <– 设置root用户的密码
Re-enter new password: <– 再输入一次你设置的密码

Remove anonymous users? [Y/n] <– 是否删除匿名用户,生产环境建议删除,所以直接回车

Disallow root login remotely? [Y/n] <–是否禁止root远程登录,根据自己的需求选择Y/n并回车,建议禁止

Remove test database and access to it? [Y/n] <– 是否删除test数据库,直接回车

Reload privilege tables now? [Y/n] <– 是否重新加载权限表,直接回车
tag(s): none
show comments · back · home
Edit with Markdown

已有 8 条评论

  1. zwenvelhda

    看的我热血沸腾啊https://www.237fa.com/

    zwenvelhda October 1st, 2024 at 09:26 pm回复
  2. dgcdqeffbd

    看的我热血沸腾啊www.jiwenlaw.com

    dgcdqeffbd October 6th, 2024 at 07:32 pm回复
  3. vlonmcmlmt

    看的我热血沸腾啊www.jiwenlaw.com

    vlonmcmlmt October 6th, 2024 at 07:50 pm回复
  4. fdvshddepo

    哈哈哈,写的太好了https://www.cscnn.com/

    fdvshddepo October 19th, 2024 at 02:56 pm回复
  5. tvkjwhkqvu

    文章的确不错啊https://www.cscnn.com/

    tvkjwhkqvu October 19th, 2024 at 05:30 pm回复
  6. fobtedbfjb

    哈哈哈,写的太好了https://www.cscnn.com/

    fobtedbfjb October 19th, 2024 at 05:30 pm回复
  7. lmzzrjnprd

    《中央公园第三季》欧美动漫高清在线免费观看:https://www.jgz518.com/xingkong/50684.html

    lmzzrjnprd November 14th, 2024 at 07:12 pm回复
  8. hlxhratebe

    《抵抗行动》剧情片高清在线免费观看:https://www.jgz518.com/xingkong/3577.html

    hlxhratebe November 18th, 2024 at 12:14 am回复