MySQL8.0安装

MySQL8.0安装

MySQL的最新版是8.0.x版本,与5.x版本相比,不仅仅快了很多,而且还带来了大量的更新和更快的性能,在读写工作负载,IO密集型工作负载中有着更加强劲的性能,使用了utf-8mb4作为默认字符集,同时增强了安全性。

  • MySQL8.0安装源: 

# yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm(国外源,速度很慢)

推荐使用国内源进行安装:

# yum install http://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql80-community-el7/mysql80-community-release-el7-3.noarch.rpm 

批量替换源内部的链接成国内源,加速安装速度,国外源安装速度奇慢:

# sed -i 's#repo.mysql.com/yum#mirrors.tuna.tsinghua.edu.cn/mysql/yum#; s/mysql-\([0-9]\)\.\([0-9]\)/mysql\1\2/; s#/el/\([0-9]\)/#-el\1/#; s#$basearch/##' /etc/yum.repos.d/mysql-community.repo

  

查看mysql8.0是否开启安装:

# yum repolist all | grep mysql 

MySQL8.0安装_第1张图片

 

 从上面可以看出,会默认下载5.7版本的MySQL数据库,而8.0版本的默认是关闭的,先把5.7的禁用,启用MySQL 8.0数据库。

打开文件, 修改设置:

# vim /etc/yum.repos.d/mysql-community.repo 

输入命令后显示如下代码,每一个模块代表一个版本数据库。 

其中可以看到5.7版本, enabled=1, 改为enabled=0, 禁用掉

另外可以看到8.0版本, enabled=0, 改为enabled=1, 开启 

MySQL8.0安装_第2张图片

 

修改完之后查看可以用的MySQL版本:

# yum repolist enabled | grep mysql 

 

  • MySQL 8.0版本之后,就可以正式开始安装MySQL了。

# yum install -y mysql-community-server

MySQL8.0安装_第3张图片

 

添加mysql用户组和mysql用户

MySQL8.0安装_第4张图片

 

每个数据库修改数据库的配置信息(每个节点都需要修改):

创建mysql数据目录:

# mkdir /data/mysql/data -p

# mkdir /data/mysql/log -p

修改文件夹的权限:

# chown -R mysql:mysql /data/mysql/

修改mysql的配置信息如下文件:

修改完成后启动MySQL

# systemctl start mysqld

MySQL8.0安装_第5张图片

报错修复:

执行: rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
再次进行服务安装:yum -y install mysql-server

然后再启动:# systemctl start mysqld

设置开机启动

# systemctl enable mysqld

MySQL启动状态

# systemctl status mysqld

安装完成之后会在LOG文件( /var/log/mysqld.log)中生成一个默认的临时密码,可根据自己的实际情况修改(冒号后面为旧密码)。

cat /var/log/mysqld.log

可以使用如下命令进行查找初始密码:

(由于我们修改了配置文件,通过指定文件获取初始密码)

# cat /data/mysql/log.err |grep password

2019-08-24T05:33:04.727785Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: jb_klPPYe12W

  • MySQL并修改root密码

# mysql -uroot -p

修改账号密码:

# mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Kh_2022!';

MySQL8.0安装_第6张图片

 新密码强度默认为中等,需要同时有大小写字母、数字、特殊符号,只有修改成功后才能修改配置再设置更简单的密码

主从复制设置

主从配置需要注意的点

主从服务器操作系统版本和位数一致;

Master 和 Slave 数据库的版本要一致;

Master 和 Slave 数据库中的数据要一致;

Master 开启二进制日志, Master 和 Slave 的 server_id 在局域网内必须唯一;

  

  • Master)点配置

修改 Master 的配置文件/etc/my.cnf

# vim /etc/my.cnf

在my.cnf文件中加入如下配置内容: 

[mysqld]

log-bin=mysql-bin

server-id=101

2. 从节点(Slave)配置:

修改 Slave 的配置文件/etc/my.cnf: 

vim /etc/my.cnf

在my.cnf文件中加入如下配置内容: 

[mysqld]

log-bin=mysql-bin

server-id=102

  

3. 创建用于复制操作的用户

主节点创建一个用户repl,用于从节点链接主节点时使用。

mysql> create user 'repl'@'%' identified by 'password';

mysql> grant replication slave,replication client on *.* to 'repl'@'%';

mysql> flush privileges; 

4. 获取主节点当前binary log文件名和位置(position)

mysql> show master status;

5. 在从节点(Slave)上设置主节点参数

mysql> change master to

master_user='repl',

master_password='password',

master_host='172.18.117.73',

master_log_file='mysql-bin.000001',

master_log_pos=846;

6. 查看主从同步状态

mysql> show slave status\G

7. 开启主从同步(从节点执行)

mysql> start slave;

8. 再查看主从同步状态

mysql> show slave status\G

查看状态时,可能会出现I/O任务启动失败的情况,即如下错误:

Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the –replicate-same-server-id option must be used on slave but this does not always make sense; please check the manual before using it).

这是因为在MySQL主从结构中,从机上的server_id和主机上的server_id不能相同,我们可以看一下主机上的server_id和从机上的server_id是否相同。

mysql> show variables like 'server_id';

  

主机:

MySQL8.0安装_第7张图片

 

从机:

MySQL8.0安装_第8张图片

 

这里我们把从机的server_id改成2

mysql> set global server_id=2; #此处的数值和my.cnf里设置的一样就行

重新开启同步并查看装态(从节点执行同步操作):

mysql> start slave;

mysql> show slave status\G

MySQL8.0安装_第9张图片

 

开启主从之后,如果状态如上图所示,那么说明主从信息就已经配置好了,接下来我们测试一下在主机上创建一个数据库,然后在从机上是否能够同步创建。

首先看一下我们主机和从机除了MySQL本身自带的数据库之前目前是没有任何数据的。

MySQL8.0安装_第10张图片

MySQL8.0安装_第11张图片 

MySQL8.0安装_第12张图片 

MySQL8.0安装_第13张图片 

 

数据库字符串编码查看:

mysql> show variables like 'character%';

MySQL8.0安装_第14张图片

 

默认配置文件路径:

配置文件:/etc/my.cnf

日志文件:/var/log/mysqld.log

服务启动脚本:/usr/lib/systemd/system/mysqld.service

socket文件:/var/run/mysqld/mysqld.pid

  

//创建用户

mysql> create user 'test_user' identified by 'password';

//创建数据库wiki

mysql> create database test;

//给用户授权(授权给所有用户使用)

mysql> grant all on *.* to 'test_user'@'%';

//授权某一个数据库的权限

mysql> grant all on test.* to 'test_user'@'%';

//刷新系统权限表

mysql> flush privileges; 

如果需要操作延长会话时间,则需要进行参数设置:

  • mysql的超时时间方法

mysql> SHOW GLOBAL VARIABLES LIKE '%timeout%';

其次连接超时wait_timeout设置方法如下:

Linux系统下,配置文件为路径/etc/my.cnf(28800秒合计8小时)

[mysqld]

wait_timeout=28800

interactive_timeout=28800

保存退出,重启MySQL服务即可:

# systemctl restart mysqld

  

mysql 从如何重新同步_mysql-主从复制使数据库重新同步

1.先进入主库,进行锁表,防止数据写入

使用命令:(由于退出客户端后自动释放锁,所以要一直开一个客户端用来保持加锁状态)

mysql> flush tables with read lock;

注意:当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。退出客户端后自动释放锁;

2.进行数据备份

#把数据备份到mysql-bak.sql文件,导出所有的数据表

# mysqldump -uroot -p --default-character-set=utf8 --databases crmdb nacos test > /root/mysql-bak.sql

这里注意一点:数据库备份一定要定期进行,可以用shell脚本或者python脚本,都比较方便,确保数据万无一失(可以考虑使用定时任务去执行脚本)

(另一种加锁方式:就是在导出的时候加上锁表语句,然后在导出的时候,查看master 状态,这样也是准确的:mysqldump -uroot -p --default-character-set=utf8 --lock-all-tables --databases crmdb nacos test > /root/mysql-bak.sql,注意--lock-all-tables是锁定所有表,这整个全局读锁会一直持续到导出结束。

3.查看master 状态(须在加锁状态下,才能准确查看位置)

mysql> show master status;

4. 把mysql备份文件传到从库机器,进行数据恢复

#使用scp命令拷贝到远程机器

# scp mysql.bak.sql [email protected]:/root/

5.停止从库的状态

mysql> stop slave;

6.然后到从库执行mysql命令,导入数据备份

mysql> source /root/mysql-bak.sql;

7.设置从库同步,注意该处的同步点,就是主库show master status信息里的| File| Position两项:

mysql>change master to

master_user='repl',

master_password='Admin_r00t_321',

master_host='172.18.17.16',

master_log_file='mysql-bin.000001',

master_log_pos=6873;

8.重新开启从同步

mysql> start slave;

9.查看同步状态

mysql> show slave status\G

查看:

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

好了,同步完成啦。

10.解锁主库(关闭客户端自动会解锁全局锁):

mysql> unlock tables;

你可能感兴趣的:(k8s,mysql,数据库,java)