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

    实现主从复制的条件:

    1、主DB server和从DB server数据库的版本一致

    2、主DB server和从DB server数据库数据名称一致

    3DB server开启二进制日志,DB server和从DB serverserver_id都必须唯一

    1.mysql 主从复制

    1.1 Mysql主服务器配置

    第一步:修改my.conf文件:

    [mysqld]段下添加:

    binlog-do-db=booking #表示那个数据库需要打印binlog

    binlog-ignore-db=mysql #过滤掉mysql 数据库

    #启用二进制日志

    log-bin=mysql-bin

    #服务器唯一ID,一般取IP最后一段

    server-id=134

    #sql 的模式

    sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

    第二步:重启mysql服务

    service mysqld restart

    第三步:建立帐户并授权slave

    mysql>GRANT FILE ON *.* TO 'backup'@'%' IDENTIFIED BY 'backup';

    mysql>GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* to 'backup'@'%' identified by 'backup';

     

    #一般不用root帐号,“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用具体客户端IP代替,如192.168.145.134,加强安全。

    刷新权限

    mysql> FLUSH PRIVILEGES;

      

    查看mysql现在有哪些用户

    mysql>select user,host from mysql.user;

    第四步:查询master的状态

    mysql> show master status;

    +------------------+----------+--------------+------------------+-------------------+

    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

    +------------------+----------+--------------+------------------+-------------------+

    | mysql-bin.000001 |      1565 |  booking          | mysql            |                   |

    +------------------+----------+--------------+------------------+-------------------+

    1 row in set

    1.2 Mysql从服务器配置

    第一步:修改my.conf文件

    [mysqld]

    server-id=166

    第二步:配置从服务器

    mysql>change master to master_host='192.168.25.134',master_port=3306,master_user='backup',master_password='backup',master_log_file='mysql-bin.000001',master_log_pos=1565

    注意语句中间不要断开master_portmysql服务器端口号(无引号)master_user为执行同步操作的数据库账户,“1565”无单引号(此处的120就是show master status 中看到的position的值,这里的mysql-bin.000001就是file对应的值)

    第二步:启动从服务器复制功能

    Mysql>start slave;

    第三步:检查从服务器复制功能状态:

    mysql> show slave status

     

    Slave_IO_Running: Yes //此状态必须YES

    Slave_SQL_Running: Yes //此状态必须YES

    ……………………(省略部分)

    注:Slave_IOSlave_SQL进程必须正常运行,即YES状态,否则都是错误的状态(如:其中一个NO均属错误)

    错误处理:

    如果出现此错误:

    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.

    因为是mysql是克隆的系统所以mysqluuid是一样的,所以需要修改。

    解决方法:

    删除/var/lib/mysql/auto.cnf文件,重新启动服务。

    以上操作过程,从服务器配置完成。

    说明:主从数据库的表结构一定要相同:

    遇到问题:

    [SQL]-- show slave status;
    stop slave;
    受影响的行: 0
    时间: 0.004s

    [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

    解决方案:原文:https://blog.csdn.net/innerpeaceScorpio/article/details/80936769 

    背景:
    最近在使用MySQL数据库时,遇到了两个问题:一个是在导入数据的时候,报错说datetime默认值不能为0000 ;另一个是程序在运行时,报了以上标题上的错误,这两个错误都是修改了MySQL的配置文件中的sql_mode得以解决。

    目的:
    本篇文章一是记录这个解决办法,二是记录一下这些基本的Linux操作命令。

    查看sql_mode的值是ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,
    ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION

    解决办法:
    前面一个默认值问题,去掉NO_ZERO_IN_DATE, NO_ZERO_DATE就可以了,标题的这个错误去掉ONLY_FULL_GROUP_BY就可以了。

    my.cnf是mysql启动时加载的配置文件,我们找到这个文件,看看它的内容

    全局搜索 : find / -name my.cnf


    切到etc目录下:cd /etc
    查看内容:cat my.cnf 或 cat my.cnf more

    可以看到sql_mode的值,这个值是我改过之后的值,没改之前是ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE,
    ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER, and NO_ENGINE_SUBSTITUTION,比如我们要去掉该配置中的ONLY_FULL_GROUP_BY这一项。

    修改文件:vi my.cnf
        使用键盘上的Page Up和Page Down键可以上下翻页;按下Insert键,可以见到窗口左下角有“Insert”字样,表示当前为插入编辑状态,这时从键盘输入的内容将插入到光标位置;再按下Insert键,左下角将有“Replace”字样,表示当前为替换编辑状态,这时从键盘输入的内容将替换光标位置的内容。

    保存
        编辑完内容后,按下Esc键,并输入“:wq”,然后回车就可以保存退出



  • 相关阅读:
    top
    ls
    Redis持久化
    Redis数据库
    Redis对象类型
    Redis底层数据类型
    Redis面试问题
    Java源码解析——集合框架(五)——HashMap源码分析
    Java源码解析——集合框架(四)——LinkedListLinkedList原码分析
    Java源码解析——集合框架(三)——Vector
  • 原文地址:https://www.cnblogs.com/lshan/p/10824186.html
Copyright © 2011-2022 走看看