zoukankan      html  css  js  c++  java
  • mysql多实例(个人的情况,不是大众的)里面有配置好的脚本+主从复制

    [root@DB-S ~]# ll /usr/local/|grep mysql
    lrwxrwxrwx. 1 root root   21 Jun 14 01:52 mysql -> /alidata/server/mysql
    #这是脚本免编译的安装的环境(比较复杂)
    
    [root@DB-S /]# tree /data/
    /data/
    ├── 3307
    │   └── data
    └── 3308
        └── data
    
    4 directories, 0 files
    
    [root@DB-S 3307]# find /data -type f -name mysql |xargs chmod 700
    
    [root@DB-S scripts]# ls
    mysql_install_db
    [root@DB-S scripts]# pwd
    /alidata/server/mysql/scripts
    
    [root@DB-S scripts]# ./mysql_install_db --basedir=/alidata/server/mysql --datadir=/data/3307/data --user=mysql
    [root@DB-S scripts]# ./mysql_install_db --basedir=/alidata/server/mysql --datadir=/data/3308/data --user=mysql
    
    /usr/local/mysql/bin/mysqld: File '/data/3307/mysql-bin.index' not found (Errcode: 13)
    160614  5:46:15 [ERROR] Aborting
    #没有权限
    root@DB-S data]# chown -R mysql:mysql 330*
    [root@DB-S data]# ll
    total 8
    drwxr-xr-x. 3 mysql mysql 4096 Jun 14 06:03 3307
    drwxr-xr-x. 3 mysql mysql 4096 Jun 14 05:48 3308
    
    [root@DB-S 3308]# ./mysql start
    + port=3308
    + echo 3308
    3308
    + mysql_user=root
    + CmdPath=/usr/local/mysql/bin
    + mysql_sock=/data/3308/mysql.sock
    + case $1 in
    + function_start_mysql
    + '[' '!' -e /data/3308/mysql.sock ']'
    + printf 'Starting MySQL.....
    '
    Starting MySQL.....
    + /bin/bash /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/3308/my.cnf
    
    [root@DB-S 3308]# netstat -lnutp|grep mysqld
    tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      16239/mysqld        
    tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      24077/mysqld        
    tcp        0      0 0.0.0.0:3308                0.0.0.0:*                   LISTEN      24910/mysqld 
    
    [root@DB-S 3308]# mysql -uroot -p -S /data/3308/mysql.sock 
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 1
    Server version: 5.5.40-log MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql> 
    
    关闭不同端口的数据库:
    [root@DB-S 3307]# ./mysql stop
    3307
    Stoping MySQL.....
    [root@DB-S 3307]# netstat -lnutp|grep mysqld
    tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      16239/mysqld        
    

     ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    [root@DB-S ~]# ls /data/330*
    /data/3307:
    data  my.cnf  mysql  mysql_barry3307.err  mysql-bin.000001  mysql-bin.index  mysqld.pid  mysql.sock  slow.log
    
    /data/3308:
    data  my.cnf  mysql  mysql_barry3308.err  mysql-bin.000001  mysql-bin.index  mysqld.pid  mysql.sock  slow.log
    
    #下面有脚本mysql的内容和my.cnf的内容
    
    [root@DB-S ~]# cat /data/3307/my.cnf
    [client]
    port            = 3307
    [mysql]
    no-auto-rehash
    [mysqld]
    user    = mysql
    port    = 3307
    basedir = /usr/local/mysql
    datadir = /data/3307/data
    socket          = /data/3307/mysql.sock
    open_files_limit    = 1024
    back_log = 600
    max_connections = 800
    max_connect_errors = 3000
    table_cache = 614
    external-locking = FALSE
    max_allowed_packet =8M
    sort_buffer_size = 1M
    join_buffer_size = 1M
    thread_cache_size = 100
    thread_concurrency = 2
    query_cache_size = 2M
    query_cache_limit = 1M
    query_cache_min_res_unit = 2k
    #default_table_type = InnoDB
    thread_stack = 192K
    transaction_isolation = READ-COMMITTED
    tmp_table_size = 2M
    max_heap_table_size = 2M
    long_query_time = 1
    #log_long_format
    log-error = /data/3307/error.log
    log-slow-queries = /data/3307/slow.log
    pid-file = /data/3307/mysql.pid
    log-bin = /data/3307/mysql-bin
    relay-log = /data/3307/relay-bin
    relay-log-info-file = /data/3307/relay-log.info
    binlog_cache_size = 1M
    max_binlog_cache_size = 1M
    max_binlog_size = 2M
    expire_logs_days = 7
    key_buffer_size = 16M
    read_buffer_size = 1M
    read_rnd_buffer_size = 1M
    bulk_insert_buffer_size = 1M
    myisam_sort_buffer_size = 1M
    myisam_max_sort_file_size = 10G
    #myisam_max_extra_sort_file_size = 10G
    myisam_repair_threads = 1
    myisam_recover
    lower_case_table_names = 1
    skip-name-resolve
    slave-skip-errors = 1032,1062
    replicate-ignore-db=mysql
    server-id = 2
    innodb_additional_mem_pool_size = 4M
    innodb_buffer_pool_size = 32M
    innodb_data_file_path = ibdata1:128M:autoextend
    innodb_file_io_threads = 4
    innodb_thread_concurrency = 8
    innodb_flush_log_at_trx_commit = 2
    innodb_log_buffer_size = 2M
    innodb_log_file_size = 4M
    innodb_log_files_in_group = 3
    innodb_max_dirty_pages_pct = 90
    innodb_lock_wait_timeout = 120
    innodb_file_per_table = 0
    [mysqldump]
    quick
    max_allowed_packet = 2M
    [mysqld_safe]
    log-error=/data/3307/mysql_barry3307.err
    pid-file=/data/3307/mysqld.pid
    
    [root@DB-S ~]# cat /data/3307/mysql
    #!/bin/bash
    #mysql多实例启动脚本
    #init
    port=3307
    echo $port
    mysql_user="root"
    #mysql_pwd="" #注意密码
    CmdPath="/usr/local/mysql/bin"
    mysql_sock="/data/${port}/mysql.sock"
    #startup function
    function_start_mysql()
    {
    	if [ ! -e "$mysql_sock" ];then
    		printf "Starting MySQL.....
    "
    		/bin/bash ${CmdPath}/mysqld_safe --defaults-file=/data/${port}/my.cnf 2>&1 >/dev/null&
    	else      
    		printf "MySQL is running......
    "
    		exit
    	fi
    
    }
    #stop function
    function_stop_mysql()
    {
    	if [ ! -e "$mysql_sock" ];then
    		printf "MySQL is stopped.... 
    "
    		exit
    	else
    		printf "Stoping MySQL.....
    "
    		${CmdPath}/mysqladmin -u ${mysql_user}  -S /data/${port}/mysql.sock shutdown
    	fi      #如查有密码加 -p${mysql_pwd}
    
    }
    #restart function
    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: /data/${port}/mysql {start|stop|restart}
    "
    esac
    

     端口3308同上,把3307换成3308就行了!

    百度网盘(配好的配置文件):http://pan.baidu.com/s/1bo6MTGV

    配置mysql多实例数据库开机自启动:

    [root@DB-S 3308]# echo "/data/3307/mysql start" >>/etc/rc.local
    [root@DB-S 3308]# echo "/data/3308/mysql start" >>/etc/rc.local
    [root@DB-S 3308]# grep "330[7,8]" /etc/rc.
    rc.d/         rc.local      rc.local.bak  rc.sysinit    
    [root@DB-S 3308]# grep "330[7,8]" /etc/rc.local
    /data/3307/mysql start
    /data/3308/mysql start
    
    [root@DB-S ~]# cat /etc/rc.local
    #!/bin/sh
    #
    # This script will be executed *after* all the other init scripts.
    # You can put your own initialization stuff in here if you don't
    # want to do the full Sys V style init stuff.
    
    touch /var/lock/subsys/local
    /etc/init.d/mysqld start
    /etc/init.d/nginx start
    /etc/init.d/php-fpm start
    systemctl start vsftpd.service
    /data/3307/mysql start
    /data/3308/mysql start
    

     为root增加密码:

    [root@DB-S ~]# mysqladmin -S /data/3307/mysql.sock -uroot password"3307"
    mysqladmin: Unknown command: 'password3307'
    [root@DB-S ~]# mysqladmin -S /data/3307/mysql.sock -uroot password "3307"
    [root@DB-S ~]# mysql -S /data/3307/mysql.sock #这是无法这样登录
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
    [root@DB-S ~]# mysql -S /data/3307/mysql.sock -uroot -p
    Enter password: #密码:3307
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 5
    Server version: 5.5.40-log MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
    
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
    
    Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
    
    mysql> 
    

     主从复制配置:

    [root@DB-S ~]# grep 'server-id' /etc/my.cnf
    server-id	= 1
    #server-id       = 2
    [root@DB-S ~]# grep 'server-id' /data/3307/my.cnf 
    server-id = 2
    [root@DB-S ~]# sed -i 's/server-id.*/server-id = 3/g' /data/3308/my.cnf 
    [root@DB-S ~]# grep 'server-id' /data/3308/my.cnf 
    server-id = 3
    

     创建用于同步的帐号:

    [root@DB-S ~]# mysql -uroot -p
    mysql> grant replication slave on *.* to 'rep'@'%' identified by "3306";
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)
    

     锁表只读:

    mysql> flush tables with read lock;
    Query OK, 0 rows affected (0.00 sec)
    

    查看主库状态:

    mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000017 |      459 |              |                  |#后面的从库复制时是从这个位置开始同步
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)
    

     导出数据库数据:

    [root@DB-S backup]# /alidata/server/mysql/bin/mysqldump -uroot -p3306 --all-databases|gzip >/server/backup/mysql_bak.`date +%F`.sql.gz
    -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
    
    [root@DB-S ~]# ls /server/backup/mysql_bak.2016-06-14.sql.gz 
    /server/backup/mysql_bak.2016-06-14.sql.gz
    

    确保导库期间,数据库没有数据插入,可以再检查下主库状态信息

    [root@DB-S ~]# mysql -uroot -p3306 -e "show master status"
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000017 |      459 |              |                  |
    +------------------+----------+--------------+------------------+
    

     导库后,解锁主库,恢复可写:

    [root@DB-S ~]# mysql -uroot -p3306 -e "unlock tables;"
    

     把主库备份的MySQL数据迁移到从库:

    设置server-id值并关闭binlog设置

    [root@DB-S ~]# egrep "log-bin|erver-id" /data/3307/my.cnf 
    #log-bin = /data/3307/mysql-bin
    server-id = 2
    [root@DB-S ~]# sed -i 's/(log-bin.*)/#1/g' /data/3308/my.cnf 
    [root@DB-S ~]# egrep "log-bin|erver-id" /data/3308/my.cnf 
    #log-bin = /data/3308/mysql-bin
    server-id = 3
    [root@DB-S ~]# service mysqld start
    Starting MySQL.. SUCCESS! 
    [root@DB-S ~]# /data/3307/mysql start
    3307
    Starting MySQL.....
    [root@DB-S ~]# /data/3308/mysql start
    [root@DB-S ~]# netstat -lnutp |grep mysqld
    tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      7526/mysqld         
    tcp        0      0 0.0.0.0:3307                0.0.0.0:*                   LISTEN      8342/mysqld         
    tcp        0      0 0.0.0.0:3308                0.0.0.0:*                   LISTEN      9155/mysqld         
    

     还原主数据库导出的数据备份:

    [root@DB-S backup]# ls
    mysql_bak.2016-06-14.sql.gz
    [root@DB-S backup]# which gzip
    /bin/gzip
    [root@DB-S backup]# gzip -d mysql_bak.2016-06-14.sql.gz 
    [root@DB-S backup]# ls
    mysql_bak.2016-06-14.sql
    
    [root@DB-S backup]# mysql -uroot -p3307 -S /data/3307/mysql.sock <mysql_bak.2016-06-14.sql
    [root@DB-S backup]# mysql -uroot -p3308 -S /data/3308/mysql.sock <mysql_bak.2016-06-14.sql
    

     登录从库配置同步参数:

    [root@DB-S backup]# mysql -uroot -p3307 -S /data/3307/mysql.sock <<EOF
    > CHANGE MASTER TO
    > MASTER_HOST='192.168.1.99',
    > MASTER_PORT=3306,
    > MASTER_USER='rep',
    > MASTER_PASSWORD='3306',
    > MASTER_LOG_FILE='mysql-bin.000018',
    > MASTER_LOG_POS=107;
    > EOF
    
    [root@DB-S backup]# mysql -uroot  -S /data/3308/mysql.sock <<EOF
    CHANGE MASTER TO
    MASTER_HOST='192.168.1.99',
    MASTER_PORT=3306,
    MASTER_USER='rep',
    MASTER_PASSWORD='3306',
    MASTER_LOG_FILE='mysql-bin.000018',
    MASTER_LOG_POS=107;
    EOF
    

     启动从库同步开关:

    [root@DB-S backup]# mysql -uroot -p'3307' -S /data/3307/mysql.sock -e "start slave;"
    [root@DB-S backup]# mysql -uroot  -S /data/3308/mysql.sock -e "start slave;"
    [root@DB-S backup]# mysql -uroot  -p3307 -S /data/3307/mysql.sock -e "show slave statusG;"
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.1.99
                      Master_User: rep
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000018
              Read_Master_Log_Pos: 107
                   Relay_Log_File: relay-bin.000002
                    Relay_Log_Pos: 253
            Relay_Master_Log_File: mysql-bin.000018
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: mysql
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 107
                  Relay_Log_Space: 403
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 1
    
    [root@DB-S backup]# mysql -uroot -S /data/3308/mysql.sock -e "show slave statusG;"*************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.1.99
                      Master_User: rep
                      Master_Port: 3306
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000018
              Read_Master_Log_Pos: 107
                   Relay_Log_File: relay-bin.000002
                    Relay_Log_Pos: 253
            Relay_Master_Log_File: mysql-bin.000018
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB: 
              Replicate_Ignore_DB: mysql
               Replicate_Do_Table: 
           Replicate_Ignore_Table: 
          Replicate_Wild_Do_Table: 
      Replicate_Wild_Ignore_Table: 
                       Last_Errno: 0
                       Last_Error: 
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 107
                  Relay_Log_Space: 403
                  Until_Condition: None
                   Until_Log_File: 
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File: 
               Master_SSL_CA_Path: 
                  Master_SSL_Cert: 
                Master_SSL_Cipher: 
                   Master_SSL_Key: 
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error: 
                   Last_SQL_Errno: 0
                   Last_SQL_Error: 
      Replicate_Ignore_Server_Ids: 
                 Master_Server_Id: 1
    
    判断复制是否搭建成功就看如下IO和SQL两个线程是否显示为Yes状态
    Slave_IO_Running:Yes  负责从库去主库读取Binlog日志,并写入从库的中继日志中
    Slave_SQL_Runnint:Yes  负责读取并中继日志中Binlog,转换SQL语句后应用到数据库汇总
  • 相关阅读:
    Java学习--设计模式之创建型模式
    Java学习--设计模式简介
    Spring MVC 学习总结(十)——Spring+Spring MVC+MyBatis框架集成(IntelliJ IDEA SSM集成)
    Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)
    Spring MVC 学习总结(八)——Spring MVC概要与环境配置(IDEA+Maven+Tomcat7+JDK8、示例与视频)
    Spring MVC 学习总结(六)——Spring+Spring MVC+MyBatis框架集成
    Spring MVC 学习总结(五)——校验与文件上传
    Spring MVC 学习总结(四)——视图与综合示例
    Spring MVC 学习总结(三)——请求处理方法Action详解
    Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解
  • 原文地址:https://www.cnblogs.com/bass6/p/5585194.html
Copyright © 2011-2022 走看看