一、MySQL安装
#卸载自带残留的mysql,或文件夹
rpm -qa | grep mysql
find - / -name mysql
#上传解压MySQL包,tar包
tar -xvf mysql-8.0.22-linux-glibc2.12-x86_64.tar.xz
#复制解压后的文件到 /usr/local命名mysql
cp -r mysql-8.0.22-linux-glibc2.12-x86_64 /inspur/mysql
#创建mysql配置存放目录data
cd /inspur/mysql
mkdir data
#创建mysql用户组和用户
groupadd mysql
useradd -r -g mysql mysql
#为MySQL目录修改用户权限
chown -R mysql:mysql /inspur/mysql/
#配置mysql(my.cnf)
vim /etc/my.cnf
[mysqld]
basedir=/inspur/mysql
datadir=/inspur/mysql/data
#skip-grant-tables
port=3306
pid-file=/inspur/mysql/data/mysql.pid
socket=/tmp/mysql.sock
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
default_authentication_plugin=mysql_native_password
#数据库默认字符集, 主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4
#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_general_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
#最大连接数
max_connections = 3000
#系统盘的70%-80%
innodb_buffer_pool_size=35G
skip-name-resolve
#SQL数据包发送的大小,如果有BLOB对象建议修改成1G
max_allowed_packet = 1G
#大小写是否敏感参数(写1,一定要写 1 ,不要问为什么)
#lower_case_table_names=0 表名存储为给定的大小和比较是区分大小写的
#lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
#lower_case_table_names=2 表名存储为给定的大小写但是比较的时候是小写的
#unix,linux下lower_case_table_names默认值为 0 .Windows下默认值是 1 .Mac OS X下默认值是 2
lower_case_table_names = 1
#是否启用慢查询日志,1为启用,0为禁用
slow_query_log = 1
#指定慢查询日志文件的路径和名字,可使用绝对路径指定;默认值是'主机名_slow.log',位于datadir目录
slow_query_log_file = slow.log
#指定达到多少秒才算慢查询
long_query_time = 3
#MySQL在完成某些join(连接)需求的时候,为了减少参与join的“被驱动表”的读取次数以提高性能,需要使用到join buffer来协助完成join操作,当join buffer 太小,MySQL不会将该buffer存入磁盘文件而是将join buffer中的结果与需求join的表进行操作,然后清空join buffer中的数据,继续将剩余的结果集写入次buffer中
join_buffer_size = 512M
#MySQL读入缓冲区的大小
read_buffer_size = 64M
#MySQL的随机读缓冲区大小
read_rnd_buffer_size = 512M
#MySQL的顺序读缓冲区大小
sort_buffer_size = 32M
server-id=1
log-bin=mysql-bin
binlog_format=mixed
#清日志
relay_log=mysqld-relay-bin
[client]
port=3306
socket=/tmp/mysql.sock
#加入MySQL开机自启
cd /inspur/mysql
cp support-files/mysql.server /etc/init.d/mysql
chmod +x /etc/init.d/mysql //添加可执行权限
chkconfig --add mysql //添加开机自启
chkconfig --list //查看自启是否添加成功
#环境变量
vim /etc/profile
export PATH=$PATH:/inspur/mysql/bin:/inspur/mysql/lib
#重新加载
source /etc/profile
#初始化(初始化之前先配置my.cnf)
cd /mysql/bin
./mysqld --user=mysql --initialize --basedir=/inspur/mysql --datadir=/inspur/mysql/data
#记录初始密码 2sRud7xV>sf+
#重启mysql
service mysql start
systemctl restart mysql
#修改密码
ALTER user 'root'@'localhost'IDENTIFIED WITH mysql_native_password BY 'g@PfWWFAS3Z3cVutxa<2vmBZ';
#给远程登录权限
#update user set host = '%' where user ='root';
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'g@PfWWFAS3Z3cVutxa<2vmBZ';
grant all privileges on *.* to 'root'@'%';
flush privileges;
5.7修改密码
方法1: 用SET PASSWORD命令
首先登录MySQL。
mysql> set password for root@localhost = password('123');
grant all privileges on *.* to 'root'@'%' with grant option;
flush privileges;
赋权之后用工具就可以改密码了
MySQL 远程连接慢
my.ini里面添加
[mysqld]
skip-name-resolve # 一般我们只要这一项便可以
skip-grant-tables
二、mysql主从搭建
1、my.cnf配置
(主)
server-id=1
log-bin=mysql-bin
binlog_format=mixed
#log-slave-updates=ON
binlog-do-db=run #同步的数据库名称(可以不写,不写就是全库)
(从)
server-id=2
log-bin=mysql-bin
binlog_format=mixed
#log-slave-updates=ON
2、主服务器配置;
#在主服务器上建一个账号
mysql> CREATE USER 'repl'@'172.16.128.42' IDENTIFIED WITH mysql_native_password BY 'inspur135?!';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'172.16.128.42';
mysq1> flush privileges;
#查看当前bin日志信息(记录后不要动主数据库)
SHOW MASTER STATUS;
记录内容:(master_log_file=“mysql-bin.000006” master_log_pos=156;) 下一步用
3、从服务器配置
mysq1>stop slave;
mysq1>reset slave;
mysq1> change master to master_host="172.16.128.41", master_user="repl",master_password="inspur135?!", master_log_file="mysql-bin.000001",master_log_pos=842;
#解释:CHANGE MASTER TO MASTER_HOST=‘主服务器的IP地址’,MASTER_USER’主服务器上用于同步数号’,MASTER_PASSWORD"同步账号的密码",MASTER_LOG_FILE=“bin日志的文件名”,MASTER_LOG_POS=bin Eposition值";
4、开启主从
start slave;
show slave status \G //查看有没有启动成功
Slave_SQL_Running: no 问题解决
MariaDB [(none)]> stop slave;
MariaDB [(none)]> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G