Ubuntu20.04搭建MySQL8.0.28主从+半同步

 纯纯的干货,Ubuntu系统下安装MySQL本文绝对够你用了

一、Ubuntu安装MySQL

Ubuntu的源仓库里维护着MySQL的最新源数据,可以使用apt命令直接安装最新的MySQL。

1.2、更新本地的源数据

sudo apt update

1.3、查看MySQL最新版本

1.3.1、到MySQL官网查看最新版本的MySQL

MySQL :: Download MySQL Community Server

1.3.2、查看Ubuntu源中的MySQL最新版本

使用 apt-cache pkgnames 命令,列出所有可用软件包

#查询mysql相关的软件包
apt-cache pkgnames | grep mysql
# 有点多,根据返回的数据,进一步筛选mysql-server
apt-cache pkgnames | grep mysql-server
#可以看到这里有mysql-server-8.0 和mysql-server-core-8.0说明和官网大版本是一致的

apt search mysql-server 搜索适用与当前版本的软件包

# apt search mysql-server
Sorting... Done
Full Text Search... Done
default-mysql-server/focal,focal 1.0.5ubuntu2 all
  MySQL database server binaries and system database setup (metapackage)

default-mysql-server-core/focal,focal 1.0.5ubuntu2 all
  MySQL database server binaries (metapackage)

mysql-server/focal-updates,focal-updates,focal-security,focal-security,now 8.0.28-0ubuntu0.20.04.3 all [installed]
  MySQL database server (metapackage depending on the latest version)

mysql-server-8.0/focal-updates,focal-security,now 8.0.28-0ubuntu0.20.04.3 amd64 [installed,automatic]
  MySQL database server binaries and system database setup

mysql-server-core-8.0/focal-updates,focal-security,now 8.0.28-0ubuntu0.20.04.3 amd64 [installed,automatic]
  MySQL database server binaries

可以看出目前可用的软件和官网的版本一致

1.4、安装MySQL

在ubuntu中安装mysql只要一行命令就可以了 sudo apt install mysql-server

*注意

通过apt安装的mysql

不需要

  • 启动——安装好已经启动
  • 设置开机启动——安装好已经设置
  • 开启服务——安装好已经默认开启,并且服务名叫做mysql,而不是mysqld

1.5、MySQL服务管理

sudo service mysql status # 查看服务状态
sudo service mysql start # 启动服务
sudo service mysql stop # 停止服务
sudo service mysql restart # 重启服务

1.6、登陆

方法一:默认账户登录

查看密码使用sudo cat /etc/mysql/debian.cnf这条查看

方法二:直接进入mysql

命令:sudo mysql

方法三:本地root登陆

命令: mysql -u root -p

让输入密码,直接回车

1.7、远程连接

1.7.1、新建可以远程链接的用户

使用1.6的任意方法登陆,然后创建用户

#注意修改username为你想要的用户名,yourpassword为你的密码
create user 'username'@'%' identified by 'yourpassword';
#授权
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
#刷新权限
FLUSH PRIVILEGES;

1.7.2、允许远程登录

先关停mysql服务

#关闭mysql
sudo systemctl stop mysql
#或者使用
sudo service mysql stop # 停止服务

编辑mysql配置文件

sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

注释掉bind-address

#bind-address           = 127.0.0.1

再开启mysql服务即可sudo service mysql start

二、MySQL主从搭建

2.1、安装MySQL

在同一个局域网中安装两台版本一致的MySQL,在第一部分我们已经安装好了MySQL。

2.2、配置MySQL配置

2.2.1、修改主库配置

登陆服务器172.26.35.173

修改 vi /etc/mysql/mysql.conf.d/mysqld.cnf 配置

修改配置:

[mysqld]

# 主从配置-主机(所有配置必须写在[mysqld]下)
server-id                  = 173 # 服务器id,唯一
log_bin                    = /var/log/mysql/mysql-bin.log # 二进制日志,实现主从的关键
binlog_format              = mixed # 日志格式,默认不是mixed推荐mixed
binlog_expire_logs_seconds = 604800 # 日志过期的时间秒数(7天),默认2592000(30天)
max_binlog_size            = 200M # 最大二进制日志文件
binlog_do_db               = test # 同步的数据库(如果不写,默认全部同步)
#不给从机同步的库(多个写多行)
binlog-ignore-db           = mysql
binlog-ignore-db           = information_schema
binlog-ignore-db           = performance_schema
binlog-ignore-db           = sys

**binlog日志类型binlog_format**

一般电商系统都会有同步MySQL数据到其他中间件或者系统,例如EC、kafka、redis等,如果需要同步,并且时使用canal(阿里开源,使用广泛的同步方案),binlog_format必须要ROW 模式

2.2.2、修改从库配置

登陆服务器172.26.35.174

修改 vi /etc/mysql/mysql.conf.d/mysqld.cnf 配置

修改配置:

[mysqld]

# (所有配置必须写在[mysqld]下)
server-id                  = 174 # 服务器id,唯一
#加上以下参数可以避免更新不及时,SLAVE 重启后导致的主从复制出错
read_only                  = 1
master_info_repository     = TABLE
relay_log_info_repository  = TABLE
relay-log                  = relay-log

2.3、创建同步用户,配置同步

2.3.1、在主库上创建同步用户

主数据库创建用户slave并授权

mysql -uroot -p

# 创建用户
create user 'slave'@'%' identified with mysql_native_password by 'password';

# 授权
grant replication slave on *.* to 'slave'@'%';

# 刷新权限
flush privileges;

在从库主机测试slave用户是否可用

mysql -uslave -p -h172.26.35.173 -P3306

主数据库查询服务ID及Master状态

# 登录
mysql -uroot -p

# 查询server_id是否可配置文件中一致
show variables like 'server_id';

# 若不一致,可设置临时ID(重启失效)
set global server_id = 1;

# 查询Master状态,并记录 File 和 Position 的值
show master status;

# 注意:执行完此步骤后退出主数据库,防止再次操作导致 File 和 Position 的值发生变化

2.3.2、从库设置同步

从数据库中设置主数据库

# 登录
mysql -uroot -p

# 查询server_id是否可配置文件中一致
show variables like 'server_id';

# 若不一致,可设置临时ID(重启失效)
set global server_id = 2;

# 设置主数据库参数,此处为了方便看,以下面方式执行
change master to master_host='192.168.247.129', # 主机ip
master_port=3306,
master_user='用户名', # 1.2 中授权的用户
master_password='密码',
master_log_file='mysql-bin.000001', # 2.3.1 中的File
master_log_pos=544; # 2.3.1 中的Position
#上面方便看,以下面的方式执行
change master to master_host='172.26.35.173',master_port=3306,master_user='slave',master_password='password',master_log_file='mysql-bin.000002',master_log_pos=156;

# 开始同步
start slave;

# 若出现错误,则停止同步,重置后再次启动
stop slave;
reset slave;
start slave;

# 查询Slave状态
show slave status\G

# 查看是否配置成功
# 查看参数 Slave_IO_Running 和 Slave_SQL_Running 是否都为yes,则证明配置成功。若为no,则需要查看对应的 Last_IO_Error 或 Last_SQL_Error 的异常值。

测试

# 在主数据库创建数据库test
create database test;

# 从数据库查看
show databases;

# 在主数据库创建表
use test;
create table t_user(id int, name varchar(20));

# 插入数据
insert into t_user values(1, 'C3Stones');

# 在从数据库查看
use test;
select * from t_user;

# 其他删改查操作请自行测试

2.4、半同步复制

2.4.1、主库配置

直接在配置文件中设置永久配置

修改 vi /etc/mysql/mysql.conf.d/mysqld.cnf 配置在[mysqld]下面添加对应配置

# 设置半同步插件
plugin-load="rpl_semi_sync_master=semisync_master.so"
#添加或修改下行,需要先安装semisync_master.so插件后,再重启,否则无法启动
rpl_semi_sync_master_enabled=ON 
#加或修改下行,设置3s内无法同步,也将返回成功信息给客户端
rpl_semi_sync_master_timeout=3000

2.4.2、从库配置

修改 vi /etc/mysql/mysql.conf.d/mysqld.cnf 配置在[mysqld]下面添加对应配置

# 设置半同步插件
plugin-load="rpl_semi_sync_slave=semisync_slave.so"
# #添加或修改下行,需要先安装semisync_master.so插件后,再重启,否则无法启动
rpl_semi_sync_slave_enabled= 1

2.4.3、信息确认

# 查看主从复制信息
mysql> show status like '%semi_sync%';
# 查看半同步复制状态
mysql> show variables  like "rpl_semi_sync_%_enabled";

# 查看插件几个变量
mysql> show global variables like "%semi%";
+-------------------------------------------+------------+
| Variable_name                             | Value      |
+-------------------------------------------+------------+
| rpl_semi_sync_master_enabled              | OFF        |
| rpl_semi_sync_master_timeout              | 10000      |
| rpl_semi_sync_master_trace_level          | 32         |
| rpl_semi_sync_master_wait_for_slave_count | 1          |
| rpl_semi_sync_master_wait_no_slave        | ON         |
| rpl_semi_sync_master_wait_point           | AFTER_SYNC |
| rpl_semi_sync_slave_enabled               | OFF        |
| rpl_semi_sync_slave_trace_level           | 32         |
+-------------------------------------------+------------+

三、错误与解决

3.1、配置完半同步后MySQL启动失败

原因:配置错误,参考了别人错误的配置

解决关键:查看日志(Ubuntu中的MySQL错误日志位置:/var/log/mysql/)

3.2、主从同步状态,错误

查看从库同步状态时出现错误,如下:

首次开启同步时错误, 原因不详,重新设置同步

#停止同步(新版slave改名为replica)
stop replica;

#查看主库log位置
show master status\G

#重新设置同步位置(MASTER_LOG_FILE和MASTER_LOG_POS来源master)
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026', MASTER_LOG_POS=0;

#启动同步
start replica;

3.3、测试同步时报错

原因:从库replica(slave)启动前,主库master 创建了数据库test(测试同步用的),从库没有创建;replica启动后,主库删除了test(测试用),从库报错,导致同步进程关闭

解决:主库删除test之后从库重新设置同步位置,没有彻底解决,以后遇到了同步错误,一样会导致无法同步

可以使用MySQL同步参数set global sql_replica_skip_counter=1;跳过错误 **启动replica前都要设置*

#停止同步(新版slave改名为replica)
stop replica;
#跳过错误,注意每次重启replica前都要设置
set global sql_replica_skip_counter=1;
#启动同步
start replica;

参考

MySQL安装

1、ubuntu20 安装和配置mysql8.0.23

2、Ubuntu20.04安装MySQL8.0

3、ubuntu软件包管理

4、MySQL读取配置文件的顺序、启动方式、启动原理

主从复制

5、ubuntu mysql8.0实现主从复制

6、MySQL主从结构搭建

7、mysql中binlog_format模式与配置详解

8、Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)

半同步复制

9、一文看懂MySQL的异步复制、全同步复制与半同步复制

10、深入MySQL复制(三):半同步复制

**注意此参考文档插件名称错误**

11、MySQL8.0.25使用插件实现主从半同步复制

错误与解决

12、MySQL数据同步,出现Slave_SQL_Running:no和slave_io_running:no问题的解决方法

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Ubuntu Hadoop集群搭建是在Ubuntu操作系统上搭建Hadoop分布式计算框架的过程。下面是一个简单的步骤: 1. 安装Ubuntu操作系统:首先,你需要在每台计算机上安装Ubuntu操作系统。你可以从Ubuntu官方网站下载最新的稳定版本,并按照官方文档进行安装。 2. 安装Java开发工具包(JDK):Hadoop是用Java编写的,所以你需要安装Java开发工具包。你可以使用以下命令在Ubuntu上安装OpenJDK: ``` sudo apt-get update sudo apt-get install openjdk-8-jdk ``` 3. 配置SSH免密登录:为了方便集群节点之间的通信,你需要配置SSH免密登录。你可以使用以下命令生成SSH密钥对,并将公钥分发到所有节点上: ``` ssh-keygen -t rsa -P "" cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ``` 4. 下载和配置Hadoop:你可以从Apache Hadoop官方网站下载最新的稳定版本。下载完成后,解压缩文件并将Hadoop文件夹移动到适当的位置。然后,你需要编辑Hadoop配置文件,包括core-site.xml、hdfs-site.xml和mapred-site.xml等。 5. 配置Hadoop环境变量:为了方便使用Hadoop命令,你需要将Hadoop的bin目录添加到系统的PATH环境变量中。你可以编辑~/.bashrc文件,并添加以下行: ``` export HADOOP_HOME=/path/to/hadoop export PATH=$PATH:$HADOOP_HOME/bin ``` 6. 配置Hadoop集群:在配置文件中,你需要指定Hadoop集群的主节点和从节点。你可以编辑hdfs-site.xml文件,并设置dfs.replication参数来指定数据的备份数量。此外,你还需要配置yarn-site.xml文件来指定资源管理器和节点管理器的位置。 7. 启动Hadoop集群:在启动Hadoop集群之前,你需要格式化Hadoop分布式文件系统(HDFS)。你可以使用以下命令来完成: ``` hdfs namenode -format ``` 然后,你可以使用以下命令启动Hadoop集群: ``` start-dfs.sh start-yarn.sh ``` 以上是一个简单的Ubuntu Hadoop集群搭建的步骤。请注意,这只是一个基本的指南,实际搭建过程可能会因环境和需求而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值