zoukankan      html  css  js  c++  java
  • mysql主从复制

    1、主从服务器版本一致(主版本可低于从版本)

    2、网络连通性

    3、一个拥有复制权限的账户,便于从服务器进行复制

    4、干净的环境,没有RPM包安装过的mysql

    版本:5.6.13

    二进制版本:

    http://dev.mysql.com/downloads/mirror.php?id=413946

    源码版本

    http://dev.mysql.com/downloads/mirror.php?id=413981

    -1 mysql的安装

    groupadd mysql

    useradd -g mysql mysql

    tar xv mysql* 

    cd mysql*

    *******************************编译安装*********************************

    (若为二进制版本,则不需要这一步)

    cmake . 

    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql
    -DMYSQL_DATADIR=/usr/local/mysql/data
    -DWITH_DEBUG=0
    -DMYSQL_USER=mysql
    -DDEFAULT_CHARSET=utf8
    -DDEFAULT_COLLATION=utf8_general_ci

    (配置文件不满意,可以删除目录下的CMakeCache.txt)

    make && make install

    *******************************配置mysql*******************************

    cd /usr/local/mysql

    cp support-files/mysql.server /etc/init.d/mysqld

    chkconfig --add mysqld 

    chkconfig --level 2345 mysqld on 

    cp support-files/my-medium.cnf /etc/my.cnf(版本5.6.13没有找到模版,复制default)

    *******************************配置mysql*******************************

    log_bin = /usr/local/mysql/log/mysql-bin

    basedir = /usr/local/mysql  

    datadir = /usr/local/mysql/data  

    port = 3306  

    server_id = 1  

    socket = /tmp/mysql.sock

    *******************************初始化mysql******************************

    scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

    *******************************data和log写权限***************************

    chown -R root:mysql /usr/local/mysql

    chown -R mysql:mysql /usr/local/mysql/data

    chown -R mysql:mysql /usr/local/mysql/log

    *******************************环境变量*********************************

    vim ~/.bash_profile

    PATH=$PATH:$home/bin:/usr/local/mysql/bin:/usr/local/mysql/lib

    source /root/.bash_profile

    -2 服务器配置文件

    --1 主服务器(需重启mysql)(定义事物提交后将日志从内存转移至磁盘,同时立即刷新日志,将数据写入磁盘)

    log-bin=mysql-bin

    server-id=1

    sync-binlog=1

    innodb-flush-logs-at-trx-commit=1

    --2 从服务器(需重启mysql)(定义从服务器只读,并关闭bin日志,同时slave服务定义为手动)

    #log-bin=

    relay-log=relay-bin

    relay-log-index=relay-bin.index

    server-id=11

    skip-slave-start=1

    read-only=1

    -3 mysql配置

    --1 主服务器(192.168.1.1)授权,获取最后阶段的日志记录位置,并备份当前数据库(--lock-all-tables备份前锁表,备份后自动解锁;--master-data=2 记录CHANGE MASTER TO MASTER_LOG_FILE和MASTER_LOG-POS)

    mysql -uroot

    >grant replication client,replication slave on *.* to repl@'192.168.1.%' identified by '123456';

    >show master status;

    >

    *************************** 1. row ***************************
    File: mysql-bin.000009
    Position: 107
    Binlog_Do_DB:
    Binlog_Ignore_DB:
    1 row in set (0.00 sec)

    >q

    mysqldump --all-databases --lock-all-tables --master-data=2 -p密码 > /root/slave.sql

    scp /root/slave.sql root@192.168.1.1:/usr/local/mysql

    --2 从服务器(192.168.1.2)恢复数据库,设置连接属性,并开启复制

    mysql -uroot

    >source /usr/local/mysql;

    >change master to MASTER_HOST='192.168.1.1',MASTER_USER='repl',MASTER_PASSWORD='123456',MASTER_LOG_FILE='mysql-bin.000009',MASTER_LOG_POS='107';

    >start slave;

    -4 半同步模式(降低同步延迟问题)

    --1 半同步模式需要插件支持,默认插件位置在/usr/local/mysql/lib/plugin

    --2 主服务器

    mysql -uroot

    >install plugin rpl_semi_sync_master scname 'semisync_master.so';

    >set global rpl_semi_sync_master_enable=1;

    >set global rpl_semi_sync_master_timeout=1000; 

    --3 从服务器

    mysql -uroot

    >install plugin rpl_semi_sync_slave scname 'semisync_slave.so';

    >set global rpl_semi_sync_slave_enable=1;

    >set global rpl_semi_sync_slave_timeout=1000;

    >stop slave;

    >start slave;

    -5 监控状态

    --1 主从复制异步重要变量

    >show slave status;

    获取如下,两个皆为yes正常,有一个不为yes,则有问题

    Slave_IO_Running: Yes

    Slave_SQL_Running: Yes

    --2 半同步重要变量

    重要变量:

    >show global variables like 'rpl_%';

    获取如下

    表明连接slave数量

    rpl_semi_sync_master_client=n

    表明半同步是否启用,1活动,0非活动

    rpl_semi_sync_master_status=1

    表明半同步是否启用。I/O线程是否启用,1活动,0非活动

    rpl_semi_sync_slave_status=1

    [星空刺] |-->一颗星辰一闪即逝,支撑它的唯有方向和目的
  • 相关阅读:
    解释JUnit中@BeforeClass和@AfterClass标注的方法必须是static的,而在TestNg不必
    总结TestNg与JUnit的异同
    FitNesseRoot/ErrorLogs目录下可查看fitnesse输出日志
    项目构建工具ant的使用
    用插件maven-surefire-report-plugin生成html格式测试报告
    fitnesse生成的FitNesseRoot路径问题
    fitnesse管理引进的jar包
    简要总结selenium四个工具组
    selenium 2 设置浏览器安装路径
    磁盘IO
  • 原文地址:https://www.cnblogs.com/aaa103439/p/3296240.html
Copyright © 2011-2022 走看看