MySQL之初始化配置

0. 作用

  • 控制MySQL的启动
  • 影响客户端的连接

1. 初始化配置的方式

  • 源码安装:编译过程中设置初始化参数
  • 配置文件:数据库启动前,设定配置文件参数 /etc/my.cnf
  • 启动脚本命令行:mysqld_safe –skip-grant-tables –skip-networking &

2. 配置文件的应用

2.1 配置文件读取顺序

[root@db01 ~]# mysqld --help --verbose | grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 

# 注:
# 默认情况下,MySQL启动时,会依次读取以上配置文件,如果有重复选项,会以最后一个文件设置的为准。
# 但是,如果启动时加入了--defaults-file=xxxx指定配置文件时,以上的所有文件都不会读取.

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 配置过程
  1. 创建需要目录
[root@db01 ~]# mkdir -p /data/330{7..9}/data
[root@db01 ~]# mkdir -p /binlog/330{7..9}
  1. 创建配置文件
cat > /data/3307/my.cnf < /data/3308/my.cnf < /data/3309/my.cnf <
  1. 初始化数据
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
  1. 准备启动脚本
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
  1. 启动多实例
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
#export PATH=/app/database/mysql/bin:$PATH
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         

你可能感兴趣的:(MySQL,数据库,mysql,linux)