0. 作用
1. 初始化配置的方式
- 源码安装:编译过程中设置初始化参数
- 配置文件:数据库启动前,设定配置文件参数
/etc/my.cnf
- 启动脚本命令行:
mysqld_safe –skip-grant-tables –skip-networking &
2. 配置文件的应用
2.1 配置文件读取顺序
[root@db01 ~]
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
2.2 配置文件书写格式
# 用户区分不同程序参数
[标签]
配置项=xxxx
标签类型:服务端、客户端
# 负责数据库服务端运行参数设定
服务器端标签:
[mysqld]
[mysqld_safe]
[server]
# 影响客户端连接(只影响本地,不影响远程)
客户端标签:
[mysql]
[mysqldump]
[client]
-------------------------------
# 配置文件基础模板
[mysqld] # 服务器端标签
user=mysql # 负责数据库管理用户
basedir=/app/database/mysql # 软件的安装位置
datadir=/data/3306 # 数据的存放位置
server_id=6 # 表示节点的唯一编号(主从有用)
port=3306 # 端口号
socket=/tmp/mysql.sock # 套接字文件
[mysql] # 客户端标签
socket=/tmp/mysql.sock # 读取socket文件的位置点
3. MySQL的多实例
3.1 同版本多实例
3.1.1 规划
- 软件1份
- 配置文件 3份
/data/330{7..9}/my.cnf
- 数据目录 3份
/data/330{7..9}/data
- 初始化数据 3次
- 日志目录 3份
/binlog/330{7..9}
- socket 3份
/tmp/mysql330{7..9}
- 端口 3份
port=3307,3308,3309
- server_id 3份
server_id=7,8,9
3.1.2 配置过程
- 创建需要目录
[root@db01 ~]# mkdir -p /data/330{7..9}/data
[root@db01 ~]# mkdir -p /binlog/330{7..9}
- 创建配置文件
cat > /data/3307/my.cnf < /data/3308/my.cnf < /data/3309/my.cnf <
- 初始化数据
chown -R mysql.mysql /data /binlog
mv /etc/my.cnf /etc/my.cnf.bak
mysqld --initialize-insecure --user=mysql --datadir=/data/3307/data --basedir=/app/database/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3308/data --basedir=/app/database/mysql
mysqld --initialize-insecure --user=mysql --datadir=/data/3309/data --basedir=/app/database/mysql
- 准备启动脚本
cat > /etc/systemd/system/mysql3307.service << EOF
[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=/app/database/mysql/bin/mysqld --defaults-file=/data/3307/my.cnf
LimitNOFILE = 5000
EOF
cat > /etc/systemd/system/mysql3308.service << EOF
[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=/app/database/mysql/bin/mysqld --defaults-file=/data/3308/my.cnf
LimitNOFILE = 5000
EOF
cat > /etc/systemd/system/mysql3309.service << EOF
[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=/app/database/mysql/bin/mysqld --defaults-file=/data/3309/my.cnf
LimitNOFILE = 5000
EOF
- 启动多实例
systemctl stop mysql
systemctl start mysql3307
systemctl start mysql3308
systemctl start mysql3309
netstat -tulnp | grep mysqld
tcp6 0 0 :::3307 :::* LISTEN 1796/mysqld
tcp6 0 0 :::3308 :::* LISTEN 1857/mysqld
tcp6 0 0 :::3309 :::* LISTEN 1892/mysqld
3.2 不同版本多实例
3.2.0 软链接不同版本软件,修改环境变量
ln -s mysql-5.6.46-linux-glibc2.12-x86_64 mysql56
ln -s mysql-8.0.18-linux-glibc2.12-x86_64 mysql80
mv /etc/my.cnf /etc/my.cnf.bak
vim /etc/profile
3.2.1 准备不同目录
mkdir -p /data/331{7..9}/data
mkdir -p /binlog/331{7..9}
chown -R mysql.mysql /data /binlog
3.2.2 准备配置文件
cat > /data/3317/my.cnf < /data/3318/my.cnf < /data/3319/my.cnf <
3.2.3 初始化数据
/app/database/mysql/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/3317/data --basedir=/app/database/mysql
/app/database/mysql56/scripts/mysql_install_db --user=mysql --datadir=/data/3318/data --basedir=/app/database/mysql56
/app/database/mysql80/bin/mysqld --initialize-insecure --user=mysql --datadir=/data/3319/data --basedir=/app/database/mysql80
3.2.4 准备启动脚本
cat > /etc/systemd/system/mysql3317.service << EOF
[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=/app/database/mysql/bin/mysqld --defaults-file=/data/3317/my.cnf
LimitNOFILE = 5000
EOF
cat > /etc/systemd/system/mysql3318.service << EOF
[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=/app/database/mysql56/bin/mysqld --defaults-file=/data/3318/my.cnf
LimitNOFILE = 5000
EOF
cat > /etc/systemd/system/mysql3319.service << EOF
[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=/app/database/mysql80/bin/mysqld --defaults-file=/data/3319/my.cnf
LimitNOFILE = 5000
EOF
3.2.5 启动多实例
systemctl start mysql3317
systemctl start mysql3318
systemctl start mysql3319
netstat -tulnp | grep mysqld
tcp6 0 0 :::3317 :::* LISTEN 3162/mysqld
tcp6 0 0 :::3318 :::* LISTEN 3197/mysqld
tcp6 0 0 :::3319 :::* LISTEN 3225/mysqld
tcp6 0 0 :::33060 :::* LISTEN 3225/mysqld