MySQL初始化配置

作用

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

初始化配置的方法

初始化配置文件(例如/etc/my.cnf)
启动命令行上进行设置(例如:mysqld_safe mysqld)
预编译时设置(仅限于编译安装时设置)

初始化配置文件

初始化配置文件的默认读取路径

# 默认配置文件读取顺序
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时,以上的所有文件都不会读取

配置文件的书写方式

格式:
    [标签]
    配置项=xxxx

    标签类型:服务端、客户端
    服务器端标签:
    [mysqld]
    [mysqld_safe]
    [server]

    客户端标签:
    [mysql]
    [mysqldump]
    [client]

配置文件的示例:
    cat /etc/my.cnf
    [mysqld]
    user=mysql  # 用户
    basedir=/usr/local/mysql  # 软件目录
    datadir=/data/mysql/data  # 数据目录
    socket=/tmp/mysql.sock  # socket位置
    server_id=6  # 服务器ID号
    port=3306  # 端口
    log_error=/data/mysql/mysql.log  # 日志位置
    [mysql]
    socket=/tmp/mysql.sock

多实例配置

# 数据目录准备
mkdir /data/330{7,8,9}/data -p
chown -R mysql.mysql /data/*
tree -L 2 /data/
# 配置文件
cat > /data/3307/my.cnf <<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
server_id=7
log_bin=/data/3307/mysql-bin
EOF

cat > /data/3308/my.cnf <<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3308/data
socket=/data/3308/mysql.sock
log_error=/data/3308/mysql.log
port=3308
server_id=8
log_bin=/data/3308/mysql-bin
EOF

cat > /data/3309/my.cnf <<EOF
[mysqld]
basedir=/usr/local/mysql
datadir=/data/3309/data
socket=/data/3309/mysql.sock
log_error=/data/3309/mysql.log
port=3309
server_id=9
log_bin=/data/3309/mysql-bin
EOF
# 移动原来的配置文件
mv /etc/my.cnf{,.bak}

# 初始化三套数据库
mysqld --initialize-insecure  --user=mysql --datadir=/data/3307/data --basedir=/usr/local/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3308/data --basedir=/usr/local/mysql
mysqld --initialize-insecure  --user=mysql --datadir=/data/3309/data --basedir=/usr/local/mysql

# 启动文件配置
cp /etc/systemd/system/mysqld.service  /etc/systemd/system/mysqld3307.service
cp /etc/systemd/system/mysqld.service  /etc/systemd/system/mysqld3308.service
cp /etc/systemd/system/mysqld.service  /etc/systemd/system/mysqld3309.service

# 修改相关启动文件
vim /etc/systemd/system/mysqld3307.service
ExecStart=/application/mysql/bin/mysqld  --defaults-file=/data/3307/my.cnf

vim /etc/systemd/system/mysqld3308.service
ExecStart=/application/mysql/bin/mysqld  --defaults-file=/data/3308/my.cnf

vim /etc/systemd/system/mysqld3309.service
ExecStart=/application/mysql/bin/mysqld  --defaults-file=/data/3309/my.cnf

# 启动
systemctl start mysqld3307.service
systemctl start mysqld3308.service
systemctl start mysqld3309.service

# 检查验证多实例
ps -ef |grep mysql
netstat -lntup|grep 330

mysql -S /data/3307/mysql.sock  -e 'select @@server_id'
mysql -S /data/3308/mysql.sock  -e 'select @@server_id'
mysql -S /data/3309/mysql.sock  -e 'select @@server_id'