版权声明:版权来自翻版 https://blog.csdn.net/weixin_44455125/article/details/89394195
文章目录
mysql安装
安装
解压二进制软件包
修改/etc/profile设置环境变量
export PATH=/data/mysql/bin:$PATH
使用mysql -V 显示版本号检查
mysql Ver 14.14 Distrib 5.7.20, for linux-glibc2.12 (x86_64) using EditLine
wrapper
清理历史软件包
rpm -qa |grep “mariadb”
yum remove
创建用户
useradd mysql
下载依赖
yum install -y libaio-devel
初始化库
执行:/data/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data
[root@db01 bin]# /data/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data
2019-04-03T03:31:36.286097Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-04-03T03:31:39.742767Z 0 [Warning] InnoDB: New log files created, LSN=45790
2019-04-03T03:31:40.361162Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2019-04-03T03:31:40.507728Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: fe99ae3c-55c0-11e9-abcc-000c293e875b.
2019-04-03T03:31:40.509695Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2019-04-03T03:31:40.512733Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
[root@db01 bin]# /data/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data
--initialize-insecure: 是用无安全限制的方式进行数据初始化
--user=mysql :设置数据的管理用户
--basedir=/data/mysql :软件的安装路径
--datadir=/data/mysql/data :数据的存储位置
修改权限
chown -R mysql. /data/
准备启动脚本和基础配置文件
cp /data/mysql/support-files/mysql.server /etc/init.d/mysqld
[root@db01 mysql]# /etc/init.d/mysqld
Usage: mysqld {start|stop|restart|reload|force-reload|status} [ MySQL server options ]
[root@db01 mysql]# /etc/init.d/mysqld start
Starting MySQL.Logging to '/data/mysql/data/db01.err'.
SUCCESS!
vim /etc/my.cnf
[mysqld]
user=mysql
basedir=/data/mysql
datadir=/data/mysql/data
socket=/tmp/mysql.sock
server_id=6
[mysql]
socket=/tmp/mysql.sock
准备systemd管理的脚本
vim /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/data/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
停止重启
/etc/init.d/mysqld stop
systemctl start mysqld
登录数据库
多实例配置
多实例应用:
多实例的应用
准备多个目录
mkdir -p /data/330{7,8,9}/data
准备配置文件
----------------------------
vim /data/3307/my.cnf
[mysqld]
basedir=/data/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
server_id=7
---------------------------
vim /data/3308/my.cnf
[mysqld]
basedir=/data/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
port=3308
server_id=8
---------------------------
vim /data/3309/my.cnf
[mysqld]
basedir=/data/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
port=3309
server_id=9
---------------------------
初始化三套数据
mv /etc/my.cnf /etc/my.cnf.bak
mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/data/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/data/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/data/mysql
systemd管理多实例
cd /etc/systemd/system
cp mysqld.service mysqld3307.service
cp mysqld.service mysqld3308.service
cp mysqld.service mysqld3309.service
vim mysqld3307.service
ExecStart=/data/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
vim mysqld3308.service
ExecStart=/data/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
vim mysqld3309.service
ExecStart=/data/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
授权
chown -R mysql.mysql /data/*
启动
systemctl start mysqld3307.service
systemctl start mysqld3308.service
systemctl start mysqld3309.service
验证多实例(检查端口)
[root@db01 system]# netstat -lnp|grep 330
tcp6 0 0 :::3306 :::* LISTEN 8621/mysqld
tcp6 0 0 :::3307 :::* LISTEN 8771/mysqld
tcp6 0 0 :::3308 :::* LISTEN 8778/mysqld
tcp6 0 0 :::3309 :::* LISTEN 8785/mysqld
unix 2 [ ACC ] STREAM LISTENING 61660 8778/mysqld /data/3308/mysql.sock
unix 2 [ ACC ] STREAM LISTENING 61628 8771/mysqld /data/3307/mysql.sock
unix 2 [ ACC ] STREAM LISTENING 61663 8785/mysqld /data/3309/mysql.sock
(检查服务)
[root@db01 system]# mysql -S /data/3307/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 7 |
+---------------+-------+
[root@db01 system]# mysql -S /data/3308/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 8 |
+---------------+-------+
[root@db01 system]# mysql -S /data/3309/mysql.sock -e "show variables like 'server_id'"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| server_id | 9 |
+---------------+-------+
开启bin_log
1.创建日志目录
mkdir /data/binlog
chown -R mysql.mysql /data/binlog
2.修改配置文件
vim /etc/my.cnf
server_id=6 ----->5.6中,单机可以不需要此参数
log_bin=/data/binlog/mysql-bin
binlog_format=row
3.重启数据库生效
[root@db01 mysql]# /etc/init.d/mysqld restart
4.查看日志的开启情况
log_bin参数设置的路径,可以找到二进制日志
Master [(none)]>show variables like '%log_bin%';
+---------------------------------+------------------------------+
| Variable_name | Value |
+---------------------------------+------------------------------+
| log_bin | ON |
| log_bin_basename | /data/binlog/mysql-bin |
| log_bin_index | /data/binlog/mysql-bin.index |
| log_bin_trust_function_creators | OFF |
| log_bin_use_v1_row_events | OFF |
| sql_log_bin | ON |
+---------------------------------+------------------------------+
6 rows in set (0.01 sec)
开启GTID
查看GTID是否开启
mysql> select @@session.gtid_next;
+---------------------+
| @@session.gtid_next |
+---------------------+
| AUTOMATIC |
+---------------------+
1 row in set (0.00 sec)
开启GTID
SET @@SESSION.GTID_NEXT= 'ANONYMOUS';
vim /etc/my.cnf
gtid-mode=on
enforce-gtid-consistency=true
主从复制
#使用了多实例3307和3306进行搭建
主库中创建复制用户
db01 [(none)]>grant replication slave on *.* to repl@'10.0.0.%' identified by '123';
db01 [(none)]>select user,host from mysql.user;
备份主库
[root@db01 system]# mysqldump -uroot -p -A --master-data=2 --single-transaction -R --triggers >/backup/full.sql
#打开生成的备份文件,找到:
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=653;
-- CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003', MASTER_LOG_POS=444;
#登录3307从库
mysql -S /data/3307/mysql.sock
#恢复数据
source /backup/full.sql;
告知从库主库关键信息
CHANGE MASTER TO
MASTER_HOST='10.0.0.52',
MASTER_USER='repl',
MASTER_PASSWORD='123',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.000003',
MASTER_LOG_POS=444,
MASTER_CONNECT_RETRY=10;
从库执行
mysql> CHANGE MASTER TO
-> MASTER_HOST='10.0.0.52',
-> MASTER_USER='repl',
-> MASTER_PASSWORD='123',
-> MASTER_PORT=3307,
-> MASTER_LOG_FILE='mysql-bin.000003',
-> MASTER_LOG_POS=444,
-> MASTER_CONNECT_RETRY=10;
Query OK, 0 rows affected, 2 warnings (0.07 sec)
mysql>
开启从库线程
mysql> start slave;
Query OK, 0 rows affected (0.02 sec)
检查
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
#主从环境,主库开启了GTID,从库也要开启
mysql8.0
#下载地址
https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar