• 【原创】学习日记6:mysql主从设置及测试


    本次完成的是架构图最下面的2个db :master - slave 结构的设计。

    mysql 我是用yum装的,但是看过一些相关文章,建议还是采用编译安装。可以指定相关参数,如:

    关键字 : mysql compile

    1. -static  13% 
       --with-client-ldflags=-all-static
       --with-mysqld-ldflags=-all-static
    静态链接提高13%性能

    2. -pgcc  1%
       CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \
         CXXFLAGS="-O3 -mpentiumpro -mstack-align-double \
         -felide-constructors -fno-exceptions -fno-rtti"
    如果是Inter处理器,使用pgcc提高1%性能

    3. Unix Socket  7.5%
       --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
    使用unix套接字链接提高7.5%性能,所以在windows下mysql性能肯定不如unix下面

    4. --enable-assembler 
    允许使用汇编模式(优化性能)

    下面是总体的编译文件

    编译代码 
    CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti -fomit-frame-pointer -ffixed-ebp"
    ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static  --with-client-ldflags=-all-static  --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock --with-charset=utf8  --with-collation=utf8_general_ci --with-extra-charsets=all -prefix=/data/app/mysql5123  --datadir=/data/mysqldata --sysconfdir=/data/app/mysql5123/etc --with-charset=utf8 --enable-assembler  --without-isam --with-pthread --enable-thread-safe-client --with-client-ldflags=-all-static --with-mysqld-ldflags=-all-static --with-extra-charsets=all --with-unix-socket-path=/data/app/mysql5123/tmp/mysql.sock 

    1)

         在这里,我的master db 是192.168.65.131

                          slave db 是192.168.65.132

        且都关闭防火墙

    2   配置master 首先编辑/etc/my.cnf,添加以下配置:

    log-bin=mysql-bin #slave会基于此log-bin来做replication
    
    server-id=131 #master的标示
    
    binlog-do-db = amoeba_study #用于master-slave的具体数据库

    然后添加专门用于replication的用户:

    mysql> GRANT REPLICATION SLAVE ON *.* TO repl@192.168.65.132 IDENTIFIED BY '123456';

    重启mysql,使得配置生效:

    /etc/init.d/mysqld restart

    最后查看master状态: 

    mysql> show master status;
    +------------------+----------+--------------+------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
    +------------------+----------+--------------+------------------+
    | mysql-bin.000001 |      107 | test         |                  |
    +------------------+----------+--------------+------------------+
    1 row in set (0.00 sec)

     3)配置slave 首先编辑/etc/my.cnf,添加以下配置:

    server-id=132 #slave的标示

    配置生效后,

    配置与master的连接:

    mysql> CHANGE MASTER TO    
    
    -> MASTER_HOST='192.168.65.131',    
    
    -> MASTER_USER='repl',    
    
    -> MASTER_PASSWORD='123456',    
    
    -> MASTER_LOG_FILE='mysql-bin.000001',    
    
    -> MASTER_LOG_POS=107;

    其中MASTER_HOST是master机的ip,MASTER_USER和MASTER_PASSWORD就是我们刚才在master上添加的用户,MASTER_LOG_FILE和MASTER_LOG_POS对应与master status里的信息

    最后启动slave:

    mysql> start slave;

    4)验证master-slave搭建生效 通过查看slave机的log(/var/log/mysqld.log):

    100703 10:51:42 [Note] Slave I/O thread: connected to master 'repl@192.168.65.131:3306',  replication started in log 'mysql-bin.000001' at position 107  
    如看到以上信息则证明搭建成功,如果有问题也可通过此log找原因

    在从库上查看下状态:

    
    

    mysql> show slave status\G
    *************************** 1. row ***************************
    Slave_IO_State: Waiting for master to send event
    Master_Host: 192.168.65.131
    Master_User: repl
    Master_Port: 3306
    Connect_Retry: 60
    Master_Log_File: mysql-bin.000001
    Read_Master_Log_Pos: 107
    Relay_Log_File: mysqld-relay-bin.000002
    Relay_Log_Pos: 253
    Relay_Master_Log_File: mysql-bin.000001
    Slave_IO_Running: Yes  //必须是yes
    Slave_SQL_Running: Yes  //必须是yes
    Replicate_Do_DB:
    Replicate_Ignore_DB:
    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: 410
    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: 131
    1 row in set (0.01 sec)

    
    
    注:Slave_IO及Slave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)。
    
    以上操作过程,主从服务器配置完成。

    我们去主db上看下,a 新建个表,b 插入条数据;

    mysql> use test;
    Database changed
    mysql> create table hi_tb(id int(3),name char(10));
    Query OK, 0 rows affected (0.11 sec)
    
    mysql> insert into hi_tb values(001,'bobu');
    Query OK, 1 row affected (0.02 sec)

    我们在从库看下,a 当主库建完表后,看下show;b 插入数据后,再select下;

    mysql> use test;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | hi_tb          |
    +----------------+
    1 row in set (0.00 sec)
    
    mysql> select * from hi_tb; 
    Empty set (0.00 sec)
    
    mysql> select * from hi_tb;
    +------+------+
    | id   | name |
    +------+------+
    |    1 | bobu |
    +------+------+
    1 row in set (0.00 sec)

     ok 一切都是完美的!!!

  • 相关阅读:
    【logback】认识logback
    【mybatis】认识selectKey
    【Mybatis】Insert批量操作
    JS事件委托
    android studio cmd获取SHA1 + java环境配置
    View的setOnClickListener的添加方法
    android apk 反编译 包括解密xml文件 资源文件 源代码
    localdb 2014 添加实例 v12.0 及IIS设置
    win10 离线安装 net 2.0 3.5
    c# json使用集
  • 原文地址:https://www.cnblogs.com/wangjiafang/p/2856368.html
Copyright © 2020-2023  润新知