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;
- 卸载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 删除用户和组