版本背景:
操作系统:centos7.3
mysql版本:mysql-8.0.26-linux-glibc2.12-x86_64.tar
一、前期准备
1、检测操作系统自带安装的mysql和mariadb服务,如存在,需卸载
rpm -qa | grep mysql
rpm -qa | grep mariadb
卸载命令,所有查出来的都卸载:
rpm -e --nodeps qt5-qtbase-mysql-5.6.1-10.el7.x86_64
rpm -e --nodeps qt-mysql-4.8.5-13.el7.x86_64
rpm -e --nodeps mariadb-devel-5.5.52-1.el7.x86_64
rpm -e --nodeps mariadb-libs-5.5.52-1.el7.x86_64
2、开放mysql指定的防火墙端口,可自定义
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-ports
3、新建非root用户,用户名和用户组可根据实际情况处理
groupadd test
useradd -g test -m test
passwd test
二、安装工作
1、上传MySQL8.0.26安装包到目录下,并解压重命名
tar -xvf mysql-8.0.26-linux-glibc2.12-x86_64.tar.xz -C /opt/
cd /opt/
mv mysql-8.0.26-linux-glibc2.12-x86_64 mysql-8.0.26
2、新增配置文件和数据目录
cd mysql-8.0.26
mkdir data
touch my.cnf
附示例配置文件
[client]
port=3306
socket=/tmp/mysql.sock
[mysqld]
port=3306
#默认使用“mysql_native_password”插件认证
default-authentication-plugin=mysql_native_password
#skip-grant-tables
#datadir和basedir要根据实际情况,修改目录为最大挂载磁盘的目录下
datadir=/opt/mysql-8.0.26/data
basedir=/opt/mysql-8.0.26
socket=/tmp/mysql.sock
#log-error=/opt/mysql-8.0.26/error.log
sql-mode=NO_ENGINE_SUBSTITUTION
lower_case_table_names = 1
max_connections = 1000
innodb_print_all_deadlocks=1
log_bin_trust_function_creators = 1
#定期清理binlog日志,根据实际情况设置
#transaction_isolation='READ-COMMITTED'
#主从同步配置-主,从库改成2即可
server-id=1
log_bin=mysql-bin
binlog_format=mixed
log_bin_trust_function_creators=1
expire_logs_days=7
auto_increment_increment=1
auto_increment_offset=1
log_timestamps=SYSTEM
innodb_buffer_pool_size=20G
sort_buffer_size=16M
join_buffer_size=32M
max_connections=1000
max_allowed_packet=512M
tmp_table_size=64M
max_heap_table_size=64M
innodb_log_buffer_size=32M
innodb_log_file_size=512M
internal_tmp_mem_storage_engine=MEMORY
3、重新赋权
cd /opt
chown -R test:test mysql-8.0.26/
三、启动数据库
切换至非root用户进行后续操作
su test
1、初始化数据库
cd /opt/mysql-8.0.26/bin/
#注意用户名--user=test替换成实际的
./mysqld --user=test --basedir=/opt/mysql-8.0.26 --datadir=/opt/mysql-8.0.26/data/ --lower_case_table_names=1 --initialize
初始化成功,会生成一个随机的初始mysql登录密码。
2、启动Mysql服务
./mysqld_safe --defaults-file=/opt/mysql-8.0.26/my.cnf --user=test &
3、检测数据库是否启动成功
ps -ef|grep mysql
四、数据库信息更新
1、登录数据库
./mysql -u root -p
密码输入前面生成的随机密码
2、root密码更新
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456789';
flush privileges;
3、设置远程登录
use mysql;
update user set host='%' where user='root';
flush privileges;
五、主从设置
1、主库操作:
1、登录数据库
mysql -h 127.0.0.1 -uroot -p
Enter password:
2、新建主从同步账号
mysql> CREATE USER 'repl'@'从库ip' IDENTIFIED WITH mysql_native_password BY '同步账号的密码';
Query OK, 0 rows affected (0.00 sec)
3、给主从同步账号赋予REPLICATION权限
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'从库ip';
Query OK, 0 rows affected (0.00 sec)
4、更新数据
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
5、查主库状态信息
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 | 838 | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
mysql>
2、从库操作:
1、登录数据库
mysql -h 127.0.0.1 -uroot -p
Enter password:
2、建立主从关系
mysql> CHANGE MASTER TO MASTER_HOST='主库ip',MASTER_PORT=主库端口,MASTER_USER ='repl', MASTER_PASSWORD='同步账号的密码',MASTER_LOG_FILE='主库的File值',MASTER_LOG_POS=主库Position值;
Query OK, 0 rows affected, 1 warning (0.02 sec)
3、启动从库
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
4、查看主从状态
mysql> show slave status\G