备份数据库
先把数据库导出,
然后把原有的数据目录改名:
mv /var/lib/mysql /var/lib/mysql.bak
准备数据目录和配置目录
注意:系统默认的配置文件要删除。
3306端口实例:
mkdir -p /data/mysql/3306
mkdir -p /data/mysql/conf
mv /etc/mysql/mysql.conf.d/mysqld.cnf /data/mysql/3306.cnf
chown -R mysql:mysql /data/mysql
find /data/mysql/ -type d | xargs chmod 700
find /data/mysql/ -type f | xargs chmod 640
修改3306实例的配置文件,
3307端口实例:
mkdir -p /data/mysql/3307
mkdir -p /data/mysql/conf
cp /data/mysql/conf/3306.cnf /data/mysql/conf/3307.cnf
chown -R mysql:mysql /data/mysql
find /data/mysql/ -type d | xargs chmod 700
find /data/mysql/ -type f | xargs chmod 640
修改3307实例的配置文件,
若还有多的端口实例,参考3306和3307的配置过程。
初始化数据库实例
mysqld --defaults-file=/data/mysql/conf/3307.cnf --initialize --user=mysql --explicit_defaults_for_timestamp=1
mysqld --defaults-file=/data/mysql/conf/3306.cnf --initialize --user=mysql --explicit_defaults_for_timestamp=1
配置apparmor
配置文件路径: /etc/apparmor.d/usr.sbin.mysqld,
配置完成以后注意重新启动apparmor:
service apparmor restart
初始化实例的密码
例如初始化3306实例的密码为: 12345678
mysqld_safe --defaults-file=/data/mysql/conf/3306.cnf --skip-grant-tables &
mysql -uroot -S /data/mysql/3306/mysqld.sock
mysql> use mysql;
....
mysql> update user set authentication_string=password('12345678');
设置完成以后,需要重新启动实例,然后在第一次登陆的时候执行如下命令:
停止实例
例如停止3306实例:
mysqladmin -uroot -p -S /data/mysql/3306/mysqld.sock shutdown
启动实例
例如启动3306实例:
注意:此时没有 --skip-grant-tables 参数了。
mysqld_safe --defaults-file=/data/mysql/conf/3306.cnf &
配置允许远程连接
- 修改配置文件
- 修改数据库配置
恢复数据
将最开始备份的数据导入。
完成
至此,多实例配置已经完成。需要注意的是,多实例模式,mysql启动方式有所不同,不再是 "service mysql start/restart/stop"了。
- 启动的时候,需要指定mysql实例的配置文件。
- 停止的时候,需要指定该实例的mysqld.sock的路径。