zoukankan      html  css  js  c++  java
  • Centos6.4 + mysql-5.6.38-linux-glibc2.12-x86_64.tar 实现mysql主从复制

    mysql安装方法:
    http://www.cnblogs.com/lin3615/p/4376224.html

    如果你想要更快的,更省事的安装mysql可以去试试宝塔,一键安装,省事快捷

    安装教程:https://www.bt.cn/bbs/thread-1186-1-1.html

    用到的是两台服务器

    主:192.168.1.106

    从:192.168.1.69

    1.在主库服务器中的mysql中新建一个用户用于让从库连接使用
    insert into mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject) values('%','rjj123',password('123456'),'','','');
    2.#刷新系统授权表
    flush privileges;  
    3. #授权用户rjj只能从 192.168.1.69 这个IP访问主服务器192.168.1.106上面的数据库
    grant replication slave  on *.* to 'rjj123'@'192.168.1.69' identified by '123456';


    rjj123:用户名称,用于从服务器登陆主服务的的账号

    192.168.1.69:从服务的IP

    123456:账号的密码

    4.先把 主服务器的数据库复制到 从服务器,具体方法可参考:
    http://www.cnblogs.com/lin3615/p/3749438.html

    这一步就是在主服务和从服务中建立一样的数据库信息,数据库的一样,表结构一样
    5.配置MySQL主服务器(192.168.1.106)的my.cnf文件
    vim /etc/my.cnf  
    一下配置是我的my.cnf中全部,主要是红色部分
    [mysqld]
    #主机的东西
    binlog-do-db=rjj   
    binlog-ignore-db=mysql  
    log-bin=mysql-bin  
    
    user = mysql
    basedir = /usr/local/mysql
    skip-external-locking
    key_buffer = 384M
    max_allowed_packet=268435456
    max_connections = 500
    max_user_connections = 35
    wait_timeout=40
    connect_timeout=10
    # table_cache = 512
    sort_buffer_size = 2M
    read_buffer_size = 2M
    read_rnd_buffer_size = 8M
    myisam_sort_buffer_size = 64M
    thread_cache_size = 8
    query_cache_size = 32M
    thread_concurrency = 8
    
    #主机
    server-id = 106 
    
    # skip-innodb
    
    [mysqldump]
    quick
    max_allowed_packet = 16M
    
    [mysql]
    no-auto-rehash
    
    [myisamchk]
    key_buffer = 256M
    sort_buffer_size = 256M
    read_buffer = 2M
    write_buffer = 2M
    
    [mysqlhotcopy]
    interactive-timeout
    一般只要的是这几个参数
    server-id=1   #设置服务器id,为1表示主服务器,一般用IP地址接替log-bin=mysql-bin  #启动MySQ二进制日志系统
    binlog-do-db=test  #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
    binlog-ignore-db=mysql   #不同步mysql系统数据库
    #保存退出
    
    service mysqld  restart  #重启MySQL
    mysql -h localhost -u root -p   #登陆
    show variables like 'server_id';  #查看server-id的值是否为1
    mysql> show variables like 'server_id';
    6.show master status;  #查看主服务器,出现以下类似信息
    
    需要记住主服务器中的这个
    mysql-bin.000014
    和
    120
    
    注意:这里记住File的值:mysql-bin.000011和Position的值:107,重服务器配置会用到。
    从服务的mysql配置
    首先需要配置 /etc/my.cof 
    vim /etc/my.cnf   #编辑配置文件,在[mysqld]部分添加下面内容
    server-id=2   #设置服务器id,修改其值为2,表示为从数据库log-bin=mysql-bin  #启动MySQ二进制日志系统replicate-do-db=test   #需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
    replicate-ignore-db=mysql #不同步mysql系统数据库 read_only #设置数据库只读 service mysqld restart #重启MySQL 从服务器中mysql的基本一样,read_only #设置数据库只读,这个配置就是直接把这个从服务设置成只读的了。
    现在开始配置从服务的mysql
    #停止slave同步进程
    stop slave; 
    #执行同步语句
    change master to 
    master_host='192.168.1.106' //主机的ip
    ,master_user='rjj123' //我们在主机上授权的账号
    ,master_password='123456' //密码
    ,master_log_file='mysql-bin.000014' //我们在主服务器上得到的file
     ,master_log_pos=120; //Position

    #开启slave同步进程
    start slave; 
    
    注意:在没有开启start slave  
    执行 SHOW SLAVE STATUSG 命令显示的
    
    

    执行start slave 后我们再次执行SHOW SLAVE STATUSG 命令

     Slave_IO_Running: Yes

      Slave_SQL_Running: Yes

    这两个参数都是yes就可以了。

     

    如果执行show slave statusG;出现的是

     Slave_IO_Running: Connecting

    这个问题,网上找了好多

    一般都是这个答案

    我的不是这个问题,我把主服务器和从服务器的防火墙都关闭就可以了

    关闭防火墙的方法为:
    1. 永久性生效
    开启:chkconfig iptables on
    关闭:chkconfig iptables off
    2. 即时生效,重启后失效
    开启:service iptables start
    关闭:service iptables stop
     
    需要说明的是对于 Linux 下的其它服务都可以用以上命令执行开启和关闭操作
     
    补充:
    a. 防火墙还需要关闭ipv6的防火墙:
    chkconfig ip6tables off
    并且可以通过如下命令查看状态:
    chkconfig --list iptables
    b. selinux状态可以通过以下命令查看:
    Sestatus
    ===============
     
    好了配置好了主从复制,我们来测试下看看是不是会成功呢?
    
    
    主库的表的信息,这个是有数据的



    从库表是没有数据的

    配置同步了,但是在从库查看时候主库的数据还是不能够同步过来。

    这些数据是原来的,配置好后,没有插入过数据测试,直接在从从库查询。

    后来删除了主库的数据。现在主库和从库的数据一致了。我们插入一条数据测试看看

    主库插入数据

    现在看看从库是否有数据

    好了,现在数据同步了。

  • 相关阅读:
    java中一个类中没有公共的构造方法,则说明不能让外界去new对象。
    PyQt IDE 环境搭建
    移动App开发基本技术面
    创业公司的技术管理
    软件工程师职业道德规范和实践要求
    比较好的刷题网站推荐
    对于程序员在boss直聘求职的建议
    cocospod 安装和使用
    TabBarController和其他view无法建立Relationship segue的原因
    面试与反面试的一些问题
  • 原文地址:https://www.cnblogs.com/renjianjun/p/9093062.html
Copyright © 2011-2022 走看看