一、清理mariadb
rpm -qa|grep mariadb
#查看关于mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
find / -name mysql
#查找关于mysql的文件
rm -rf /etc/selinux/targeted/active/modules/100/mysql
#删除
rm -rf /usr/lib64/mysql
#删除
二、下载mysql8.0.34到/usr/local/mysql
mkdir /usr/local/mysql
#创建目录
cd /usr/local/mysql
#进入目录
wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar
#获取mysql8.0.34包
tar xf mysql.tar
#解压
ls /usr/local/mysql
#查看目录
安装common、libs、client、server 4个模块
rpm -ivh commonxxxx --nodeps --force
#安装common
rpm -ivh libsxxxx --nodeps --force
#安装libs
rpm -ivh clientxxxx --nodeps --force
#安装client
rpm -ivh serverxxx --nodeps --force
#安装server
rpm -qa | grep mysql
#查看安装命令
三、修改my.conf
默认在/etc
vim /etc/my.conf
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
no-auto-rehash
[mysqld]
port=3306
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#不受client字符集影响,保证server端字符集
character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
#初始连接字符集
init_connect='SET NAMES utf8mb4'
lower_case_table_names=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#避免external locking
skip-external-locking
#跳过DNS反向解析
skip_name_resolve
#最大进程连接数
max_connect_errors=10
#开启慢查询日志
slow_query_log=on
#慢查询时间
long_query_time=3
slow_query_log_file=/var/log/slowsql.log
#索引的缓冲区大小
key_buffer_size=128M
#读入缓冲区大小
read_buffer_size=1M
#随机读(查询操作)缓冲区大小
read_rnd_buffer_size=2M
#网络传输中一次消息传输量的最大值
max_allowed_packet=1M
#表描述符缓存大小
table_open_cache=64
#用来处理类似ORDER BY以及GROUP BY队列所引起的排序
sort_buffer_size=512K
net_buffer_length=8K
#默认存储引擎
default_storage_engine=InnoDB
#Innodb把所有的数据和索引都缓存起来,此参数设置越大,数据存取时所需要的磁盘I/O越少
innodb_buffer_pool_size=1024M
#0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘
#1代表InnoDB会在每次事务提交后将事务日志写到磁盘上
#2代表每次提交后日志写入日志文件,但是日志文件每秒刷新到磁盘上
innodb_flush_log_at_trx_commit=2
#确定日志文件的大小
innodb_log_file_size=256M
#写日志文件所用的内存大小
innodb_log_buffer_size=8M
#日志组中的文件总数
innodb_log_files_in_group=3
#在被回滚前,一个InnoDB的事务应该等待一个锁被批准多久
innodb_lock_wait_timeout=50
四、创建慢查询日志
touch /var/log/slowsql.log
#创建慢查询日志
chown mysql:mysql /var/log/slowsql.log
#更改用户属组属主
chmod 664 /var/log/slowsql.log
#更改文件权限
五、初始化
chown -R mysql:mysql /var/lib/mysql
#更改用户属组属主
chmod -R 755 /var/lib/mysql
#更改文件权限
mysqld --user=mysql --initialize
#初始化
初始化完成后会生成密码在日志中
cat /var/log/mysqld.log | grep password
#查看初始密码
六、启动mysql
systemctl enable --now mysql
#启动mysql并设置开机自启
七、登陆mysql
mysql -uroot -p‘密码’
#登陆mysql
八、修改密码
alter user 'root'@'localhost' identified by 'qweasd123';
九、创建远程登陆用户
create user 'admin'@'%' identified by 'qweasd123';
#创建admin用户密码为qweasd123
grant all privileges on *.* to 'admin'@'%' with grant option;
#授权admin所有权限
flush privileges;
#刷新
十、完成
master:192.168.169.129
slave1:192.168.169.130
slave2:192.168.169.131
三台完成以上操作
一、修改my.conf
master:
log-bin=mysql-bin
server-id=1
slave1:
server-id=2
slave2:
server-id=3
二、重置偏移量
master:
mysql -uadmin -p'密码'
reset master;
show master status;
获取信息:
mysql-bin.000001
Position:157
三、注册从节点
slave1 and slave2:
mysql -uroot -p'密码'
stop slave;
reset slave;
change master to master_host='master主机名',master_user='master远程用户',master_port=master端口,master_password='用户密码',master_log_file='mysql-bin.000001',master_log_pos=157;
start slave;
show slave status\G;
可能遇到的问题:
一、Slave_IO_Running: NO
1.chang master 参数设置有问题
略
2.uuid和master一致导致()
解决方法:
vim /var/lib/mysql/auto.cnf
顺便改一个数,重启mysql
二、Slave_SQL_Running: NO
1.程序可能在slave上进行了写操作
略
2.可能是slave机器重启后,事务回滚导致
解决方法:
stop slave;
set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
start slave ;