[root@mysql ~]# sed -i 'aexport PATH=/usr/local/mysql/bin/:PATH' /etc/profile //添加到环境变量
[root@mysql ~]# source /etc/profile //使配置环境生效
配置开机自启
[root@mysql ~]# chkconfig --list //列举
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
[root@mysql ~]# chkconfig --add mysql8
[root@mysql ~]# chkconfig --list
注:该输出结果只显示 SysV 服务,并不包含
原生 systemd 服务。SysV 配置数据
可能被原生 systemd 配置覆盖。
要列出 systemd 服务,请执行 'systemctl list-unit-files'。
查看在具体 target 启用的服务请执行
'systemctl list-dependencies [target]'。
mysql8 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关
//启动2345
[root@mysql ~]# chkconfig mysql8 on
[root@mysql ~]# vim /usr/local/mysql/my.cnf //配置文件
[mysqld]
basedir=/usr/local/mysql // 这是 MySQL 安装目录的路径。所有与 MySQL 相关的基础文件(例如二进制文件和库文件)都位于此目录下。
datadir=/usr/local/mysql/data // 这是 MySQL 数据目录的路径。所有数据库文件(包括数据、索引等)都存储在这个目录中。
socket=/tmp/mysql.sock //指定用于 MySQL 进程间通信的 UNIX 套接字文件的位置。这个文件允许客户端和服务器之间通过 UNIX socket 进行连接。
activate_all_roles_on_login=on //这项配置表示在用户登录 MySQL 时,系统会自动激活与该用户关联的所有角色。如果设定为 off,则只有用户明确请求的角色(s)会被激活。
[root@mysql ~]# service mysql8 restart //重启
Shutting down MySQL.. SUCCESS!
Starting MySQL. SUCCESS!
[root@mysql ~]# ll /tmp //查看套字节文件
总用量 8
srwxrwxrwx. 1 mysql mysql 0 8月 6 10:10 mysql.sock
-rw-------. 1 mysql mysql 5 8月 6 10:10 mysql.sock.lock
srwxrwxrwx. 1 mysql mysql 0 8月 6 10:10 mysqlx.sock
-rw-------. 1 mysql mysql 5 8月 6 10:10 mysqlx.sock.lock
主从mysql
一、环境准备
两台mysql服务器
主(192.168.1.129) 从(192.168.1.20)有yum本地源,阿里云镜像
主从:
[root@zmysql ~]# systemctl stop firewalld
[root@zmysql ~]# systemctl disable firewalld
[root@zmysql ~]# vim /etc/selinux/config
SELINUX=disabled
二、配置时间同步
[root@zmysql ~]# yum -y install ntpdate.x86_64
[root@zmysql ~]# ntpdate cn.ntp.org.cn
[root@zmysql ~]# yum -y install rsync
三、使用脚本部署安装
主:
[root@localhost ~]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar
[root@localhost ~]# vim mysql.sh //编写安装脚本
#!/bin/bash
yum list installed |grep libaio
if [ $? ne 0 ]; then
yum -y install libaio
fi
echo libaio yes
rm -rf /etc/my.cnf
echo remo my.cnf yes
tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
echo tar zx yes
cp -r ~/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql
echo copy file to /usr/local/mysql yes
mkdir /usr/local/mysql/mysql-files
echo mysql-files yes
grep mysql /etc/passwd
useradd -r -s /sbin/nologin mysql
chown mysql:mysql /usr/local/mysql/mysql-files
chmod 750 /usr/local/mysql/mysql-files
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/
/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql8
sed -i 'aexport PATH=/usr/local/mysql/bin:PATH' /etc/profile
source /etc/profile
[root@localhost ~]# source mysql.sh //运行脚本
[root@zmysql ~]# vim /usr/local/mysql/my.cnf //编写配置文件
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/db01-master.err
log-bin=/usr/local/mysql/data/binlog
server-id=10
character_set_server=utf8mb4
[root@zmysql ~]# service mysql8 restart //重启服务
Shutting down MySQL. SUCCESS!
Starting MySQL. SUCCESS!
从:
[root@localhost ~]# tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar
[root@localhost ~]# vim mysql.sh //编写脚本,注释掉其中两行
#!/bin/bash
yum list installed |grep libaio
if [ $? ne 0 ]; then
yum -y install libaio
fi
echo libaio yes
rm -rf /etc/my.cnf
echo remo my.cnf yes
tar -xf mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
echo tar zx yes
cp -r ~/mysql-8.0.33-linux-glibc2.12-x86_64 /usr/local/mysql
echo copy file to /usr/local/mysql yes
mkdir /usr/local/mysql/mysql-files
echo mysql-files yes
grep mysql /etc/passwd
useradd -r -s /sbin/nologin mysql
chown mysql:mysql /usr/local/mysql/mysql-files
chmod 750 /usr/local/mysql/mysql-files
#/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/
#/usr/local/mysql/bin/mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql8
sed -i 'aexport PATH=/usr/local/mysql/bin:PATH' /etc/profile
source /etc/profile
[root@localhost ~]# source mysql.sh //运行脚本
[root@localhost ~]# vim /usr/local/mysql/my.cnf //编写配置文件
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3310
log-error=/usr/local/mysql/data/db01-slave.err
relay-log=/usr/local/mysql/data/relaylog
server-id=11
character_set_server=utf8mb4
四、数据同步
回到主服务器:
[root@zmysql ~]# service mysql8 stop //停止服务
[root@zmysql ~]# rm -rf /usr/local/mysql/data/auto.cnf //这个操作保证两个mysql服务是一起的,因为这个文件存放的是mysql服务器的uuid,uuid保证了mysql服务器的唯一性,所以删除以后,两个服务器就可以做主从
[root@zmysql ~]# rsync -av /usr/local/mysql/data root@192.168.1.20:/usr/local/mysql/ //同步过去
[root@zmysql ~]# service mysql8 start //启动服务
回到从服务器
[root@localhost ~]# service mysql8 start
[root@localhost ~]# mysql -P3310 -p1812354953Gf. //使用主服务器账号密码可以登陆,默认就是用root登陆
mysql> exit
Bye
五、主从复制实现
1、主服务器创建授权账号
[root@zmysql ~]# mysql -p1812354953Gf.
mysql> create user 'gao'@'%' identified by 'abc_123';
Query OK, 0 rows affected (0.00 sec)
mysql> grant replication slave on *.* to 'gao'@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'server_id';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 10 |
+---------------+-------+
1 row in set (0.00 sec)
2、在主服务器中锁表
mysql> flush tables with read lock; //锁定表
Query OK, 0 rows affected (0.00 sec)
mysql> show master status; //查看二进制文件和位置
+---------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000008 | 846 | | | |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
3、去从服务器(3.4.5.6.7.8.9都是在从服务器做的),使⽤change master to 指定主服务器,并实现数据同步
[root@localhost ~]# mysql -P3310 -p1812354953Gf.
mysql> change master to master_host='192.168.1.129', master_user='gao', master_password='abc_123', master_port=3306, master_log_file='binlog.000008', master_log_pos=846;
Query OK, 0 rows affected, 9 warnings (0.00 sec)
4、启动slave数据同步,查看状态
mysql> start slave;
mysql> show slave status \G
这里看到IO状态依旧是connecting,这是因为mysql8.0版本需要ssl非对称加密
mysql> exit
Bye
5、获得远程主服务器的公钥
[root@localhost ~]# mysql -ugao -pabc_123 -h 192.168.1.129 -P3306 --get-server-public-key
mysql> exit
Bye
6、登陆从服务器本地的数据库
[root@localhost ~]# mysql -P3310 -p1812354953Gf.
7、停⽤slave服务,重新设置slave服务
mysql> stop slave;
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> reset slave;
Query OK, 0 rows affected, 1 warning (0.02 sec)
mysql> change master to master_host='192.168.1.129', master_user='gao', master_password='abc_123', master_port=3306, master_log_file='binlog.000008', master_log_pos=846;
Query OK, 0 rows affected, 9 warnings (0.01 sec)
8、启动slave服务
mysql> start slave;
Query OK, 0 rows affected, 1 warning (0.02 sec)
9、查看
mysql> show slave status\G
10、去主服务器解锁文件
[root@zmysql ~]# mysql -uroot -p1812354953Gf.
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)