天高云淡 发表于 2018-10-5 06:49:33

精通MySQL多实例配置

  MySQL多实例实战案例
  # mkdir -p /data/{3306,3307}/data
  # tree /data/
  /data/ 多实例根目录
  |-- 3306 3306实例的目录
  |   `-- data 3306实例的数据文件目录
  `-- 3307 3307 实例的目录
  `-- data 3307实例的数据文件目录
  4 directories, 0 files
  # unzip data.zip
  Archive:data.zip
  creating: data/
  creating: data/3306/
  inflating: data/3306/my.cnf
  inflating: data/3306/mysql
  creating: data/3307/
  inflating: data/3307/my.cnf
  inflating: data/3307/mysql
  # cp data/3306/my.cnf /data/3306/
  # cp data/3307/my.cnf /data/3307/
  # cp data/3306/mysql /data/3306/
  # cp data/3307/mysql /data/3307/
  # tree /data
  /data
  |-- 3306
  |   |-- data
  |   |-- my.cnf
  |   `-- mysql
  `-- 3307
  |-- data
  |-- my.cnf
  `-- mysql
  4 directories, 4 files
  多实例启动文件的mysql服务实质
  mysqld_safe --defaults-file=/data/3306/my.cnf 2&1 > /dev/null &
  mysqld_safe --defaults-file=/data/3307/my.cnf 2&1 > /dev/null &
  多实例启动文件的停止服务实质
  mysqladmin -uroot -p1 -S /data/3306/mysql.sock shutdown
  mysqladmin -uroot -p1 -S /data/3307/mysql.sock shutdown
  授权相关文件
  # chown -R mysql.mysql /data
  # find /data/ -type f -name "mysql" | xargs chmod 750
  # find /data/ -type f -name "mysql" | xargs ls -l
  -rwxr-x--- 1 mysql mysql 1301 Jul 31 22:54 /data/3306/mysql
  -rwxr-x--- 1 mysql mysql 1300 Jul 31 22:54 /data/3307/mysql
  初始化数据库
  # cd /usr/local/mysql/scripts/
  # ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3306/data --user=mysql
  Installing MySQL system tables...
  OK
  Filling help tables...
  OK
  # ./mysql_install_db --basedir=/usr/local/mysql --datadir=/data/3307/data --user=mysql
  Installing MySQL system tables...
  OK
  Filling help tables...
  OK
  启动服务
  # /data/3306/mysql start
  Starting MySQL...
  # /data/3307/mysql start
  Starting MySQL...
  # netstat -anutp | grep 330
  tcp      0      0 0.0.0.0:3306      0.0.0.0:*   LISTEN      37099/mysqld
  tcp      0      0 0.0.0.0:3307      0.0.0.0:*   LISTEN      37818/mysqld
  测试登录
  # mysql -S /data/3306/mysql.sock
  mysql>
  # mysql -S /data/3307/mysql.sock
  mysql>
  设定密码
  # mysqladmin -uroot -S /data/3306/mysql.sock password '1'
  # mysqladmin -uroot -S /data/3307/mysql.sock password '1'
  测试停止服务
  # /data/3306/mysql stop
  Stoping MySQL...
  # /data/3307/mysql stop
  Stoping MySQL...
  实战增加第三个实例
  # mkdir /data/3308/data -p
  # cp /data/3306/my.cnf /data/3308/
  # cp /data/3306/mysql /data/3308/
  # ls /data/3308/
  datamy.cnfmysql
  # chown -R mysql.mysql /data/3308/
  # vim /data/3308/my.cnf
  # vim /data/3308/mysql
  # cd /usr/local/mysql/scripts/
  # ./mysql_install_db \
  > --basedir=/usr/local/mysql/ \
  > --datadir=/data/3308/data \
  > --user=mysql
  Installing MySQL system tables...
  OK
  Filling help tables...
  OK
  # /data/3308/mysql start
  Starting MySQL...
  # netstat -anutp | grep 330
  tcp      0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      39537/mysqld
  tcp      0      0 0.0.0.0:3307            0.0.0.0:*               LISTEN      40254/mysqld
  tcp      0      0 0.0.0.0:3308            0.0.0.0:*               LISTEN      42028/mysqld
  # mysqladmin -uroot -S /data/3308/mysql.sock password '1'
  # mysql -uroot -p1 -S /data/3308/mysql.sock
  mysql> quit
  Bye
  # /data/3308/mysql stop
  Stoping MySQL...
  MySQL启动基本原理说明
  /etc/init.d/mysqld 是一个shell启动脚本,启动后最终会调用mysqld_safe脚本,最后调用mysqld服务启动mysql
  初始化数据库时MySQL系统输出给出的启动方法:
  mysqld_safe --user=mysql &
  提示:
  1.   当找回root密码时,会经常使用mysqld_safe --user=mysql &带参数启动
  2.   我们自己开发脚本启动数据库时可能会用到这个启动方法。
  3.   /etc/init.d/mysqld和mysqld_safe --user=mysql &的启动实质是一样的。
  MySQL关闭基本原理
  优雅关闭
  1.   mysqladmin方法
  # mysqladmin -uroot -p123 shutdown
  2.   自带的脚本
  /etc/init.d/mysqld stop
  3.   kill、killall、pkill等进程管理命令(不建议使用,特别是生产环境,高并发情况会导致数据丢失,甚至无法启动)
  觉得本文章不错的可以分享给您的朋友或订阅我,后期会分享更多的Linux技术文章

页: [1]
查看完整版本: 精通MySQL多实例配置