MySQL8.0.42安装部署、主从复制

1. 安装部署规划

本次安装MySQL 8.0.42版本(mysql-8.0.42-linux-glibc2.17-x86_64.tar.xz)
本次安装的服务器系统是CentOS7.9.2009 x86-64

1.1 环境准备

节点IP
主机名
资源
角色
192.168.8.210
hadoop-node1
cpu:8core
mem:32GB
disk:200GB
​master主
192.168.8.211
hadoop-node2
cpu:8core
mem:32GB
disk:200GB
slave从

1.2 介质准备

将介质上传到主从节点的/soft

2. 安装部署

2.1 解压介质(主从节点)

tar -xvf mysql-8.0.42-linux-glibc2.17-x86_64.tar.xz -C /apps
ln -s /apps/mysql-8.0.42-linux-glibc2.17-x86_64 /usr/local/mysql

2.2 创建环境变量(主从节点)

vi /etc/profile
添加:
export PATH=/usr/local/mysql/bin:$PATH
source /etc/profile

2.3 创建用户和组(主从节点)

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

2.4 创建数据目录并赋予权限(主从节点)

mkdir -p /data/mysql
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /data/mysql
##chmod -R 700 /usr/local/mysql

2.4 创建配置文件

主节点
vi /etc/my.cnf
##MySQL配置文件示例 [client] default-character-set = utf8mb4 socket = /tmp/mysql.sock port = 3306 #password = [mysqld] # 用户 user = mysql # 端口 port = 3306 # 密码 #password = # 套接字 socket = /tmp/mysql.sock # PID文件 pid-file = /data/mysql/mysql.pid # 字符集编码 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # 基础路径 basedir = /usr/local/mysql # 数据路径 datadir = /data/mysql # InnoDB缓冲池大小,总内存的50-80% innodb_buffer_pool_size = 4G # InnoDB缓冲池实例数 innodb_buffer_pool_instances = 4 # 日志缓冲区,如果事务较大,可适当增大 innodb_log_buffer_size = 64M # 最大连接数,中型企业设置1000 max_connections = 1000 # 线程缓存,max_connections的10-20% thread_cache_size = 100 # 临时表缓存 tmp_table_size = 128M max_heap_table_size = 128M # 错误日志 log_error = /data/mysql/mysql-error.log # 查询日志,生产环境建议关闭 general_log = ON general_log_file = /data/mysql/mysql-general.log # 慢日志查询 slow_query_log = ON long_query_time = 30 # 记录执行时间超过 30 秒的 SQL slow_query_log_file = /data/mysql/mysql-slow.log # 二进制日志、主从配置需要用到 log_bin = /data/mysql/mysql-bin.log binlog_format = ROW # 建议使用 ROW(行级日志) expire_logs_days = 14 # 只保留 14 天的 binlog #主从配置 server-id = 1 bind-address = 192.168.8.210 [mysqldump] # 使用快速方式生成备份,对大表有用 quick # 客户端和服务端传输的最大包大小
从节点
vi /etc/my.cnf
##MySQL配置文件示例 [client] default-character-set = utf8mb4 socket = /tmp/mysql.sock port = 3306 #password = [mysqld] # 用户 user = mysql # 端口 port = 3306 # 密码 #password = # 套接字 socket = /data/mysql/mysql.sock # PID文件 pid-file = /data/mysql/mysql.pid # 字符集编码 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # 基础路径 basedir = /usr/local/mysql # 数据路径 datadir = /data/mysql # InnoDB缓冲池大小,总内存的50-80% innodb_buffer_pool_size = 4G # InnoDB缓冲池实例数 innodb_buffer_pool_instances = 4 # 日志缓冲区,如果事务较大,可适当增大 innodb_log_buffer_size = 64M # 最大连接数,中型企业设置1000 max_connections = 1000 # 线程缓存,max_connections的10-20% thread_cache_size = 100 # 临时表缓存 tmp_table_size = 128M max_heap_table_size = 128M # 错误日志 log_error = /data/mysql/mysql-error.log # 查询日志,生产环境建议关闭 general_log = ON general_log_file = /data/mysql/mysql-general.log # 慢日志查询 slow_query_log = ON long_query_time = 30 # 记录执行时间超过 30 秒的 SQL slow_query_log_file = /data/mysql/mysql-slow.log # 二进制日志,从服务器无需开启 #log_bin = /apps/mysql/mysql-bin #binlog_format = ROW # 建议使用 ROW(行级日志) #expire_logs_days = 7 # 只保留 7 天的 binlog # 主从配置 server-id = 2 relay-log = /data/mysql/mysql-relay-bin.log read_only = 1 bind-address = 192.168.8.211 [mysqldump] # 使用快速方式生成备份,对大表有用 quick # 客户端和服务端传输的最大包大小 max_allowed_packet = 16M

2.5 初始化数据库(主从节点)

mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

2.6 启动服务(主从节点)

拷贝自启动文件
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
设置自启动
/sbin/chkconfig mysqld on
systemctl enable mysqld
systemctl start mysqld

2.7 修改用户密码(主从节点)

/usr/local/mysql/bin/mysql -uroot -p
##ALTER USER 'root'@'localhost' IDENTIFIED BY 'Mysql_123'; 如果不修改,本地可无密码访问
CREATE USER 'root'@'%' IDENTIFIED BY 'Mysql_123';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
登录测试mysql -uroot -pMysql_123 -h192.168.8.211 -P 3306

3. 主从配置

3.1 创建复制用户(主节点)

该用户只能通过192.168.8.211从节点访问
CREATE USER 'repusr'@'192.168.8.211' IDENTIFIED WITH mysql_native_password BY 'Mysql_123';
GRANT REPLICATION SLAVE ON *.* TO 'repusr'@'192.168.8.211';
FLUSH PRIVILEGES;

3.2 获取bin日志文件和位置(主节点)

show master status 或show master status\G

3.3 配置复制参数(从节点)

change master to master_host='192.168.8.210',master_user='repusr',master_password='Mysql_123',master_log_file='mysql-bin.000002',master_log_pos=3112;
注: 主日志文件名和位置可通过在主节点执行SHOW MASTER STATUS命令获得
主节点IP、复制用户和密码别填错了
然后执行start slave
show slave status\G 查看从节点状态

3.4 主从效果测试

主节点创建一张测试表
从节点测试效果
注:主节点插入数据,从节点可以看到该数据;但是从节点插入数据,主节点看不到数据。
针对这种情况,可以查看参数read_only和super_read_only
可以在从节点的/etc/my.cnf中[mysqld]下面看到已经已经添加read_only=1配置参数
如果要避免该问题发生,可以有两种方案:
1. 不要使用超级用户登录从节点数据库去增删改备库,比如root用户;
2. 在从节点/etc/my.cnf中增加参数super_read_only=1; 然后重启从节点数据库,再start salve;
  1. 卸载MySQL
主从节点执行
systemctl stop mysql
rm -rf /data/mysql
rm -rf /usr/local/mysql
rm -rf /apps/mysql*
rm -rf /etc/init.d/mysql.server
rm -rf /usr/lib/systemd/system/mysqld.service
vi /etc/profile 删除mysql环境变量
userdel -r mysql 删除用户和组
### MySQL 8.0.42 安装指南 以下为在 Linux 系统(以 CentOS 和 Ubuntu 为例)上安装 MySQL 8.0.42 的详细指南,包括添加官方 Yum 或 APT 仓库、安装服务器组件以及配置服务。 --- #### 一、环境准备 确保系统满足最低要求并清理可能存在的旧版本 MySQL。 - **检查现有 MySQL 版本** 如果系统中已安装旧版本的 MySQL,请先卸载以避免冲突。使用以下命令检查是否已安装 MySQL: ```bash rpm -qa | grep mysql # 对于 CentOS/RHEL dpkg -l | grep mysql # 对于 Ubuntu/Debian ``` - **停止 MySQL 服务** 如果 MySQL 正在运行,需先停止服务: ```bash systemctl stop mysqld ``` - **卸载旧版 MySQL** 卸载 MySQL 及其相关组件[^3]: ```bash yum remove mysql-* -y # 对于 CentOS/RHEL apt-get remove --purge mysql* -y # 对于 Ubuntu/Debian ``` - **删除残留文件和目录** 清理残留数据和配置文件: ```bash rm -rf /var/lib/mysql /etc/my.cnf /etc/my.cnf.d/ ``` --- #### 二、添加 MySQL 官方仓库 MySQL 提供了官方的 Yum 或 APT 仓库,用于方便安装最新版本。 ##### 1. 添加 Yum 仓库(CentOS/RHEL) 执行以下命令添加 MySQL 官方 Yum 仓库[^2]: ```bash sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm ``` 验证仓库是否成功添加: ```bash yum repolist enabled | grep "mysql.*-community.*" ``` ##### 2. 添加 APT 仓库(Ubuntu/Debian) 导入 GPG 密钥并添加 MySQL 官方 APT 仓库[^4]: ```bash wget https://dev.mysql.com/get/mysql-apt-config_0.8.25-1_all.deb sudo dpkg -i mysql-apt-config_0.8.25-1_all.deb sudo apt-get update ``` --- #### 三、安装 MySQL 8.0.42 通过官方仓库安装 MySQL 8.0.42。 ##### 1. 安装 MySQL 服务器 ```bash yum -y install mysql-community-server # 对于 CentOS/RHEL apt-get -y install mysql-server # 对于 Ubuntu/Debian ``` ##### 2. 启动 MySQL 服务 启动 MySQL 服务并设置开机自启: ```bash systemctl start mysqld systemctl enable mysqld ``` ##### 3. 查看服务状态 验证 MySQL 服务是否正常运行: ```bash systemctl status mysqld ``` --- #### 四、初始化配置 完成安装后需要进行一些必要的初始化配置。 ##### 1. 获取临时密码 首次启动时,MySQL 会生成一个临时密码,存储在日志文件中: ```bash grep 'temporary password' /var/log/mysqld.log ``` ##### 2. 修改密码 登录 MySQL 并修改默认密码: ```bash mysql -u root -p ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; ``` ##### 3. 配置防火墙 如果启用了防火墙,需开放 MySQL 默认端口(3306): ```bash firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload ``` --- #### 五、高级配置 根据需求进一步优化 MySQL 配置。 ##### 1. 编辑配置文件 编辑 `/etc/my.cnf` 文件,添加或修改关键参数[^1]: ```ini [mysqld] datadir=/data/mysql socket=/var/lib/mysql/mysql.sock default-storage-engine=INNODB character-set-server=utf8mb4 collation-server=utf8mb4_general_ci ``` ##### 2. 创建数据目录 如果更改了数据目录位置,需创建目录并授权: ```bash mkdir -p /data/mysql chown -R mysql:mysql /data/mysql ``` ##### 3. 重启服务 应用配置后重启 MySQL 服务: ```bash systemctl restart mysqld ``` --- #### 六、验证安装 确保 MySQL 8.0.42 已正确安装并运行。 ##### 1. 检查版本 ```bash mysql --version ``` ##### 2. 测试连接 尝试连接到 MySQL 服务器: ```bash mysql -u root -p ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值