zoukankan      html  css  js  c++  java
  • MySQL多实例安装教程

    MySQL的多实例

    实验准备:

    1. 一个干净的centos7系统
    2. 关闭防火墙和selinux
    3. 之前已经二进制安装过的MySQL数据库
    4. 准备文件夹
    

    准备阶段:

    1. 准备文件目录
    [root@centos7 data]#mkdir -pv /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}
    mkdir: created directory ‘/mysql’
    mkdir: created directory ‘/mysql/3306’
    mkdir: created directory ‘/mysql/3306/data’
    mkdir: created directory ‘/mysql/3306/etc’
    mkdir: created directory ‘/mysql/3306/socket’
    mkdir: created directory ‘/mysql/3306/log’
    mkdir: created directory ‘/mysql/3306/bin’
    mkdir: created directory ‘/mysql/3306/pid’
    mkdir: created directory ‘/mysql/3307’
    mkdir: created directory ‘/mysql/3307/data’
    mkdir: created directory ‘/mysql/3307/etc’
    mkdir: created directory ‘/mysql/3307/socket’
    mkdir: created directory ‘/mysql/3307/log’
    mkdir: created directory ‘/mysql/3307/bin’
    mkdir: created directory ‘/mysql/3307/pid’
    mkdir: created directory ‘/mysql/3308’
    mkdir: created directory ‘/mysql/3308/data’
    mkdir: created directory ‘/mysql/3308/etc’
    mkdir: created directory ‘/mysql/3308/socket’
    mkdir: created directory ‘/mysql/3308/log’
    mkdir: created directory ‘/mysql/3308/bin’
    mkdir: created directory ‘/mysql/3308/pid’
    
    (生成之后的效果)
    [root@centos7 data]#tree /data
    /data
    ├── mariadb-10.2.29-linux-x86_64.tar.gz
    ├── mariadb-install.sh
    ├── my.cnf
    └── mysql
        ├── aria_log.00000001
        ├── aria_log_control
        ├── centos7.localdomain.pid
        ├── ib_buffer_pool
        ├── ibdata1
        ├── ib_logfile0
        ├── ib_logfile1
        ├── ibtmp1
        ├── multi-master.info
        ├── mysql
        │   ├── columns_priv.frm
        │   ├── columns_priv.MYD
        │   ├── columns_priv.MYI
        │   ├── column_stats.frm
        │   ├── column_stats.MYD
        │   ├── column_stats.MYI
        │   ├── db.frm
        │   ├── db.MYD
        │   ├── db.MYI
        │   ├── db.opt
        │   ├── event.frm
        │   ├── event.MYD
        │   ├── event.MYI
        │   ├── func.frm
        │   ├── func.MYD
        │   ├── func.MYI
        │   ├── general_log.CSM
        │   ├── general_log.CSV
        │   ├── general_log.frm
        │   ├── gtid_slave_pos.frm
        │   ├── gtid_slave_pos.ibd
        │   ├── help_category.frm
        │   ├── help_category.MYD
        │   ├── help_category.MYI
        │   ├── help_keyword.frm
        │   ├── help_keyword.MYD
        │   ├── help_keyword.MYI
        │   ├── help_relation.frm
        │   ├── help_relation.MYD
        │   ├── help_relation.MYI
        │   ├── help_topic.frm
        │   ├── help_topic.MYD
        │   ├── help_topic.MYI
        │   ├── host.frm
        │   ├── host.MYD
        │   ├── host.MYI
        │   ├── index_stats.frm
        │   ├── index_stats.MYD
        │   ├── index_stats.MYI
        │   ├── innodb_index_stats.frm
        │   ├── innodb_index_stats.ibd
        │   ├── innodb_table_stats.frm
        │   ├── innodb_table_stats.ibd
        │   ├── plugin.frm
        │   ├── plugin.MYD
        │   ├── plugin.MYI
        │   ├── proc.frm
        │   ├── proc.MYD
        │   ├── proc.MYI
        │   ├── procs_priv.frm
        │   ├── procs_priv.MYD
        │   ├── procs_priv.MYI
        │   ├── proxies_priv.frm
        │   ├── proxies_priv.MYD
        │   ├── proxies_priv.MYI
        │   ├── roles_mapping.frm
        │   ├── roles_mapping.MYD
        │   ├── roles_mapping.MYI
        │   ├── servers.frm
        │   ├── servers.MYD
        │   ├── servers.MYI
        │   ├── slow_log.CSM
        │   ├── slow_log.CSV
        │   ├── slow_log.frm
        │   ├── tables_priv.frm
        │   ├── tables_priv.MYD
        │   ├── tables_priv.MYI
        │   ├── table_stats.frm
        │   ├── table_stats.MYD
        │   ├── table_stats.MYI
        │   ├── time_zone.frm
        │   ├── time_zone_leap_second.frm
        │   ├── time_zone_leap_second.MYD
        │   ├── time_zone_leap_second.MYI
        │   ├── time_zone.MYD
        │   ├── time_zone.MYI
        │   ├── time_zone_name.frm
        │   ├── time_zone_name.MYD
        │   ├── time_zone_name.MYI
        │   ├── time_zone_transition.frm
        │   ├── time_zone_transition.MYD
        │   ├── time_zone_transition.MYI
        │   ├── time_zone_transition_type.frm
        │   ├── time_zone_transition_type.MYD
        │   ├── time_zone_transition_type.MYI
        │   ├── user.frm
        │   ├── user.MYD
        │   └── user.MYI
        ├── performance_schema
        │   └── db.opt
        ├── tc.log
        └── test
            └── db.opt
    
    4 directories, 103 files
    
    1. 更改所有者所属组
    [root@centos7 data]#id mysql  (因为之前已经安装过MySQL数据库所以有这个用户)
    uid=987(mysql) gid=981(mysql) groups=981(mysql)
    
    [root@centos7 data]#chown -R mysql.mysql /mysql/
    [root@centos7 data]#ll mysql/
    total 122936
    -rw-rw---- 1 mysql mysql    16384 Nov 19 18:06 aria_log.00000001
    -rw-rw---- 1 mysql mysql       52 Nov 19 18:06 aria_log_control
    -rw-rw---- 1 mysql mysql        5 Nov 19 18:06 centos7.localdomain.pid
    -rw-rw---- 1 mysql mysql      938 Nov 19 18:06 ib_buffer_pool
    -rw-rw---- 1 mysql mysql 12582912 Nov 19 18:06 ibdata1
    -rw-rw---- 1 mysql mysql 50331648 Nov 19 18:06 ib_logfile0
    -rw-rw---- 1 mysql mysql 50331648 Nov 19 18:06 ib_logfile1
    -rw-rw---- 1 mysql mysql 12582912 Nov 19 18:06 ibtmp1
    -rw-rw---- 1 mysql mysql        0 Nov 19 18:06 multi-master.info
    drwx------ 2 mysql mysql     4096 Nov 19 18:06 mysql
    drwx------ 2 mysql mysql       20 Nov 19 18:06 performance_schema
    -rw-rw---- 1 mysql mysql    24576 Nov 19 18:06 tc.log
    drwx------ 2 mysql mysql       20 Nov 19 18:06 test
    

    实验阶段

    1. 分别创建数据库并确认数据库文件都生成了,再查看所有者所属组是否正确。
    143  /usr/local/mysql/scripts/mysql_install_db --datadir=/mysql/3306/data --user=mysql
    144  /usr/local/mysql/scripts/mysql_install_db --datadir=/mysql/3307/data --user=mysql
    145  /usr/local/mysql/scripts/mysql_install_db --datadir=/mysql/3308/data --user=mysql
    
    [root@centos7 data]#ll /mysql/3307
    total 0
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 bin
    drwxr-xr-x 5 mysql mysql 181 Nov 19 18:39 data
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 etc
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 log
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 pid
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 socket
    [root@centos7 data]#ll /mysql/3308
    total 0
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 bin
    drwxr-xr-x 5 mysql mysql 181 Nov 19 18:39 data
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 etc
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 log
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 pid
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 socket
    [root@centos7 data]#ll /mysql/3306
    total 0
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 bin
    drwxr-xr-x 5 mysql mysql 181 Nov 19 18:39 data
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 etc
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 log
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 pid
    drwxr-xr-x 2 mysql mysql   6 Nov 19 18:25 socket
    [root@centos7 data]#ll /mysql/3306/data/
    total 110620
    -rw-rw---- 1 mysql mysql    16384 Nov 19 18:39 aria_log.00000001
    -rw-rw---- 1 mysql mysql       52 Nov 19 18:39 aria_log_control
    -rw-rw---- 1 mysql mysql      938 Nov 19 18:39 ib_buffer_pool
    -rw-rw---- 1 mysql mysql 12582912 Nov 19 18:39 ibdata1
    -rw-rw---- 1 mysql mysql 50331648 Nov 19 18:39 ib_logfile0
    -rw-rw---- 1 mysql mysql 50331648 Nov 19 18:39 ib_logfile1
    drwx------ 2 mysql mysql     4096 Nov 19 18:39 mysql
    drwx------ 2 mysql mysql       20 Nov 19 18:39 performance_schema
    drwx------ 2 mysql mysql       20 Nov 19 18:39 test
    
    1. 准备配置文件
    [root@centos7 data]#cp /etc/my.cnf /mysql/3306/etc/
    [root@centos7 data]#vim /mysql/3306/etc/my.cnf   (根据自己规划的路径更改)
    [mysqld]
    port=3306
    socket=/mysql/3306/socket/mysqld.sock
    datadir=/mysql/3306/data
    innodb_file_per_table=1
    
    [mysqld_safe]
    log-error=/mysql/3306/log/mysqld.log
    pid-file=/mysql/3306/pid/mysqld.pid
    ~            
    (准备另外两个数据库的配置文件)
    [root@centos7 data]#cp /mysql/3306/etc/my.cnf /mysql/3307/etc/
    [root@centos7 data]#cp /mysql/3306/etc/my.cnf /mysql/3308/etc/
    (使用sed替换)
    [root@centos7 data]#sed -i 's/3306/3307/' /mysql/3307/etc/my.cnf
    [root@centos7 data]#sed -i 's/3306/3308/' /mysql/3308/etc/my.cnf
    (确认已经替换掉)
    [root@centos7 data]#cat /mysql/3308/etc/my.cnf
    [mysqld]
    port=3308
    socket=/mysql/3308/socket/mysqld.sock
    datadir=/mysql/3308/data
    innodb_file_per_table=1
    
    [mysqld_safe]
    log-error=/mysql/3308/log/mysqld.log
    pid-file=/mysql/3308/pid/mysqld.pid
    [root@centos7 data]#cat /mysql/3307/etc/my.cnf
    [mysqld]
    port=3307
    socket=/mysql/3307/socket/mysqld.sock
    datadir=/mysql/3307/data
    innodb_file_per_table=1
    
    [mysqld_safe]
    log-error=/mysql/3307/log/mysqld.log
    pid-file=/mysql/3307/pid/mysqld.pid
    
    1. 设置服务启动脚本(只有多实例安装需要自己手写脚本其他安装都是自动生成的)
    [root@centos7 data]#cd /mysql/3306/bin/
    [root@centos7 bin]#ls
    
    [root@centos7 bin]#vim mysqld
    
    #!/bin/bash
    port=3306
    mysql_user="root"
    mysql_pwd=""    (这个就为空就行)
    cmd_path="/usr/local/mysql/bin"   (这个路径按你自己的配置更改)
    mysql_basedir="/mysql"
    mysql_sock="${mysql_basedir}/${port}/socket/mysqld.sock"  (这个之前改过名就在mysql后面加了个d)
    
    function_start_mysql()
    {
        if [ ! -e "$mysql_sock" ];then
          printf "Starting MySQL...
    "
          ${cmd_path}/mysqld_safe --defaults-file=${mysql_basedir}/${port}/etc/my.cnf  &> /dev/null  &
        else
          printf "MySQL is running...
    "
          exit
        fi
    }
    
    
    function_stop_mysql()
    {
        if [ ! -e "$mysql_sock" ];then
           printf "MySQL is stopped...
    "
           exit
        else
           printf "Stoping MySQL...
    "
           ${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
       fi
    }
    
    
    function_restart_mysql()
    {
        printf "Restarting MySQL...
    "
        function_stop_mysql
        sleep 2
        function_start_mysql
    }
    
    
    case $1 in
    start)
        function_start_mysql
    ;;
    stop)
        function_stop_mysql
    ;;
    restart)
        function_restart_mysql
    ;;
    *)
        printf "Usage: ${mysql_basedir}/${port}/bin/mysqld {start|stop|restart}
    "
    esac
    [root@centos7 bin]#chmod +x mysqld    (加上执行权限)
    [root@centos7 bin]#pwd
    /mysql/3306/bin
    (在这一步的时候可以先试启动一下如果没问题就把剩下两个启动脚本一起设置好)
    
    1. 试启动3306端口的数据库
    [root@centos7 bin]#ss -ntl   (确定3306端口没有占用,这里是因为我之前二进制安装的数据库占用了关掉就好了)
    State       Recv-Q Send-Q   Local Address:Port                  Peer Address:Port              
    LISTEN      0      128                  *:111                              *:*                  
    LISTEN      0      128                  *:6000                             *:*                  
    LISTEN      0      5        192.168.122.1:53                               *:*                  
    LISTEN      0      128                  *:22                               *:*                  
    LISTEN      0      128          127.0.0.1:631                              *:*                  
    LISTEN      0      100          127.0.0.1:25                               *:*                  
    LISTEN      0      128          127.0.0.1:6010                             *:*                  
    LISTEN      0      128          127.0.0.1:6011                             *:*                  
    LISTEN      0      80                  :::3306     (这里端口还开着)       :::*                  
    LISTEN      0      128                 :::111                             :::*                  
    LISTEN      0      128                 :::6000                            :::*                  
    LISTEN      0      128                 :::22                              :::*                  
    LISTEN      0      128                ::1:631                             :::*                  
    LISTEN      0      100                ::1:25                              :::*                  
    LISTEN      0      128                ::1:6010                            :::*                  
    LISTEN      0      128                ::1:6011                            :::*           
    [root@centos7 bin]#service mysqld stop   (关闭数据库)
    Stopping mysqld (via systemctl):                           [  OK  ]
    [root@centos7 bin]#ss -ntl
    State       Recv-Q Send-Q   Local Address:Port                  Peer Address:Port              
    LISTEN      0      128                  *:111                              *:*                  
    LISTEN      0      128                  *:6000                             *:*                  
    LISTEN      0      5        192.168.122.1:53                               *:*                  
    LISTEN      0      128                  *:22                               *:*                  
    LISTEN      0      128          127.0.0.1:631                              *:*                  
    LISTEN      0      100          127.0.0.1:25                               *:*                  
    LISTEN      0      128          127.0.0.1:6010                             *:*                  
    LISTEN      0      128          127.0.0.1:6011                             *:*                  
    LISTEN      0      128                 :::111                             :::*                  
    LISTEN      0      128                 :::6000                            :::*                  
    LISTEN      0      128                 :::22                              :::*                  
    LISTEN      0      128                ::1:631                             :::*                  
    LISTEN      0      100                ::1:25                              :::*                  
    LISTEN      0      128                ::1:6010                            :::*                  
    LISTEN      0      128                ::1:6011                            :::*                  
    
    [root@centos7 bin]#./mysqld    (以为是自己写的启动脚本支持基本的三个参数)
    Usage: /mysql/3306/bin/mysqld {start|stop|restart}
    [root@centos7 bin]#./mysqld start
    Starting MySQL...
    [root@centos7 bin]#ss -ntl
    State       Recv-Q Send-Q   Local Address:Port                  Peer Address:Port              
    LISTEN      0      128                  *:111                              *:*                  
    LISTEN      0      128                  *:6000                             *:*                  
    LISTEN      0      5        192.168.122.1:53                               *:*                  
    LISTEN      0      128                  *:22                               *:*                  
    LISTEN      0      128          127.0.0.1:631                              *:*                  
    LISTEN      0      100          127.0.0.1:25                               *:*                  
    LISTEN      0      128          127.0.0.1:6010                             *:*                  
    LISTEN      0      128          127.0.0.1:6011                             *:*                  
    LISTEN      0      80                  :::3306   (启动成功)              :::*                  
    LISTEN      0      128                 :::111                             :::*                  
    LISTEN      0      128                 :::6000                            :::*                  
    LISTEN      0      128                 :::22                              :::*                  
    LISTEN      0      128                ::1:631                             :::*                  
    LISTEN      0      100                ::1:25                              :::*                  
    LISTEN      0      128                ::1:6010                            :::*                  
    LISTEN      0      128                ::1:6011                            :::*             
    
    [root@centos7 bin]#mysql -S /mysql/3306/socket/mysqld.sock   (这里要登陆的话可以指定socket文件路径进行登录)
    Welcome to the MariaDB monitor.  Commands end with ; or g.
    Your MariaDB connection id is 8
    Server version: 10.2.29-MariaDB MariaDB Server
    
    Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    MariaDB [(none)]> show databases;   (查看数据库)
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | test               |
    +--------------------+
    4 rows in set (0.00 sec)
    
    MariaDB [(none)]> create database db3306;  (建立一个数据库)
    Query OK, 1 row affected (0.00 sec)
    
    MariaDB [(none)]> quit
    Bye
    [root@centos7 bin]#cd ..
    [root@centos7 3306]#ls
    bin  data  etc  log  pid  socket
    [root@centos7 3306]#ls data/
    aria_log.00000001  ib_buffer_pool  ib_logfile1        mysql               test
    aria_log_control   ibdata1         ibtmp1             performance_schema
    db3306             ib_logfile0     multi-master.info  tc.log
    (建立的数据库就是生成一个新的文件夹)
    
    (到这里说明已经成功了,可以把之前没做完的3307,3308做完)
    
    1. 继续设置另外两个启动脚本
    [root@centos7 3306]#cp bin/mysqld /mysql/3307/bin/
    [root@centos7 3306]#cp bin/mysqld /mysql/3308/bin/  (把脚本拷贝过去)
    
    [root@centos7 3306]#sed -i 's/3306/3307/' /mysql/3307/bin/mysqld  (sed替换)
    [root@centos7 3306]#sed -i 's/3306/3308/' /mysql/3308/bin/mysqld 
    [root@centos7 3306]#cat /mysql/3307/bin/mysqld   (确认替换掉了)
    #!/bin/bash
    port=3307
    .
    .
    .
    .
    [root@centos7 3306]#cat /mysql/3308/bin/mysqld
    #!/bin/bash
    port=3308
    .
    .
    .
    .
    
    1. 启动所有脚本
    [root@centos7 3306]#/mysql/3307/bin/mysqld start (3306也可以这样启动)
    Starting MySQL...
    [root@centos7 3306]#/mysql/3308/bin/mysqld start
    Starting MySQL...
    [root@centos7 3306]#ss -ntl
    State       Recv-Q Send-Q   Local Address:Port                  Peer Address:Port              
    LISTEN      0      128                  *:111                              *:*                  
    LISTEN      0      128                  *:6000                             *:*                  
    LISTEN      0      5        192.168.122.1:53                               *:*                  
    LISTEN      0      128                  *:22                               *:*                  
    LISTEN      0      128          127.0.0.1:631                              *:*                  
    LISTEN      0      100          127.0.0.1:25                               *:*                  
    LISTEN      0      128          127.0.0.1:6010                             *:*                  
    LISTEN      0      128          127.0.0.1:6011                             *:*                  
    LISTEN      0      80                  :::3306                            :::*                  
    LISTEN      0      80                  :::3307   (成功)                   :::*                  
    LISTEN      0      80                  :::3308                            :::*                  
    LISTEN      0      128                 :::111                             :::*                  
    LISTEN      0      128                 :::6000                            :::*                  
    LISTEN      0      128                 :::22                              :::*                  
    LISTEN      0      128                ::1:631                             :::*                  
    LISTEN      0      100                ::1:25                              :::*                  
    LISTEN      0      128                ::1:6010                            :::*                  
    LISTEN      0      128                ::1:6011                            :::*                  
    (记得添加一下PATH变量要不使用命令工具很麻烦)
    [root@centos7 mysql]#echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
    [root@centos7 mysql]#. /etc/profile.d/mysql.sh
    
  • 相关阅读:
    1347: Last Digit (周期函数)
    1363: Count 101 (经典数位dp)
    1360: Good Serial Inc.(不知道是什么类型的题)
    C#winForm调用WebService的远程接口
    Web Service 的创建简单编码、发布和部署
    极致精简的webservice集成例子
    SVN使用教程总结
    C# int.Parse()与int.TryParse()
    C# 函数1 (函数的定义)
    C#中的委托和事件
  • 原文地址:https://www.cnblogs.com/www233ii/p/11892027.html
Copyright © 2011-2022 走看看