zoukankan      html  css  js  c++  java
  • mysql双机互相备份

    互备
    /***************************************master服务器**************************************/
    vi my.cnf
    [mysqld]
    #master
    server-id=1
    log-bin
    binlog-do-db=数据库名
    binlog-ignore-db=数据库名 
    rpl_semi_sync_master_enabled=1;(mysql > 5.1.6)
    rpl_semi_sync_master_timeout=1000;(mysql > 5.1.6) 
    mysql> install plugin rpl_semi_sync_master soname 'semisync_master.so';(mysql > 5.1.6)
    mysql> grant replication slave on .* to rsync@'slave的ip' identified by '密码';
    mysql> flush tables with read lock;
    mysql> show master status;
    mysql> unlock tables;(slave服务器配置完成)
    /
    **************************************slave服务器**************************************/
    vi my.cnf
    [mysqld]
    #slave(mysql <= 5.1.6)
    server-id=2
    master-host=master的ip
    master-user=用户名
    master-password=密码
    master-port=端口
    master-connect-retry=60
    replicate-do-db=数据库名
    replicate-ignore-db=数据库名 
    #slave(mysql > 5.1.6)
    server-id=2
    replicate-do-db=数据库名
    replicate-ignore-db=数据库名 
    rpl_semi_sync_slave_enabled=1
    mysql> install plugin rpl_semi_sync_slave soname 'semisync_slave.so';(mysql > 5.1.6)
    mysql> change master to master_host='master的ip',master_user='用户名',master_password='密码',master_port='端口',master_log_file='日志',master_log_pos='同步点';(mysql > 5.1.6)
    mysql> show slave statusG;
    mysql> start slave;
    mysql> stop slave;
    /***************************************Master 同步线程状态**************************************/
    以下列出了master的 Binlog Dump 线程 State 字段中最常见的几种状态。如果在master上没有 Binlog Dump 线程,那么同步就没有在运行。也就是说,没有slave连接上来。
    Sending binlog event to slave
    事件是由二进制日志构成,一个事件通常由更新语句加上其他信息。线程读取到一个事件并正发送到slave上。
    Finished reading one binlog; switching to next binlog
    读取完了一个二进制日志,正切换到下一个。
    Has sent all binlog to slave; waiting for binlog to be updated
    已经读取完全部未完成更新日志,并且全部都发送到slave了。它处于空闲状态,正等待在master上执行新的更新操作以在二进制日志中产生新的事件,然后读取它们。
    Waiting to finalize termination
    当前线程停止了,这个时间很短。
    /***************************************Slave的线程状态**************************************/
    以下列出了slave的I/O线程 State 字段中最常见的几种状态。从MySQL 4.1.1开始,这个状态在执行 SHOW SLAVE STATUS 语句结果的 Slave_IO_State 字段也会出现。这意味着可以只执行 SHOW SLAVE STATUS 语句就能了解到更多的信息。
    Connecting to master
    该线程证尝试连接到master上。
    Checking master version
    确定连接到master后出现的一个短暂的状态。
    Registering slave on master
    确定连接到master后出现的一个短暂的状态。
    Requesting binlog dump
    确定连接到master后出现的一个短暂的状态。该线程向master发送一个请求,告诉它要请求的二进制文件以及开始位置。
    Waiting to reconnect after a failed binlog dump request
    如果二进制日志转储(binary log dump)请求失败了(由于连接断开),该线程在休眠时进入这个状态,并定期重连。重连的时间间隔由 --master-connect-retry 选项来指定。
    Reconnecting after a failed binlog dump request
    该线程正尝试重连到master。
    Waiting for master to send event
    已经连接到master,正等待它发送二进制日志。如果master闲置时,这个状态可能会持续较长时间,如果它等待超过 slave_read_timeout 秒,就会发生超时。这时,它就会考虑断开连接,然后尝试重连。
    Queueing master event to the relay log
    已经读取到一个事件,正把它拷贝到中继日志中以备SQL线程处理。
    Waiting to reconnect after a failed master event read
    读日志时发生错误(由于连接断开)。该线程在重连之前休眠 master-connect-retry 秒。
    Reconnecting after a failed master event read
    正尝试重连到master。当连接确定后,状态就变成 Waiting for master to send event。
    Waiting for the slave SQL thread to free enough relay log space
    relay_log_space_limit 的值非零,中继日志的大小总和超过这个值了。I/O线程等待SQL线程先处理中继日志然后删除它们以释放足够的空间。
    Waiting for slave mutex on exit
    当前线程停止了,这个时间很短。
    Reading event from the relay log
    从中继日志里读到一个事件以备执行。
    Has read all relay log; waiting for the slave I/O thread to update it
    已经处理完中继日志中的全部事件了,正等待I/O线程写入更新的日志。
    Waiting for slave mutex on exit
    当前线程停止了,这个时间很短。 
    /***************************************Last_SQL_Errno 错误代码说明**************************************/
    1005:创建表失败
    1006:创建数据库失败
    1007:数据库已存在,创建数据库失败
    1008:数据库不存在,删除数据库失败
    1009:不能删除数据库文件导致删除数据库失败
    1010:不能删除数据目录导致删除数据库失败
    1011:删除数据库文件失败
    1012:不能读取系统表中的记录
    1020:记录已被其他用户修改
    1021:硬盘剩余空间不足,请加大硬盘可用空间
    1022:关键字重复,更改记录失败
    1023:关闭时发生错误
    1024:读文件错误
    1025:更改名字时发生错误
    1026:写文件错误
    1032:记录不存在
    1036:数据表是只读的,不能对它进行修改
    1037:系统内存不足,请重启数据库或重启服务器
    1038:用于排序的内存不足,请增大排序缓冲区
    1040:已到达数据库的最大连接数,请加大数据库可用连接数
    1041:系统内存不足
    1042:无效的主机名
    1043:无效连接
    1044:当前用户没有访问数据库的权限
    1045:不能连接数据库,用户名或密码错误
    1048:字段不能为空
    1049:数据库不存在
    1050:数据表已存在
    1051:数据表不存在
    1054:字段不存在
    1065:无效的SQL语句,SQL语句为空
    1081:不能建立Socket连接
    1114:数据表已满,不能容纳任何记录
    1116:打开的数据表太多
    1129:数据库出现异常,请重启数据库
    1130:连接数据库失败,没有连接数据库的权限
    1133:数据库用户不存在
    1141:当前用户无权访问数据库
    1142:当前用户无权访问数据表
    1143:当前用户无权访问数据表中的字段
    1146:数据表不存在
    1147:未定义用户对数据表的访问权限
    1149:SQL语句语法错误
    1158:网络错误,出现读错误,请检查网络连接状况
    1159:网络错误,读超时,请检查网络连接状况
    1160:网络错误,出现写错误,请检查网络连接状况
    1161:网络错误,写超时,请检查网络连接状况
    1062:字段值重复,入库失败
    1169:字段值重复,更新记录失败
    1177:打开数据表失败
    1180:提交事务失败
    1181:回滚事务失败
    1203:当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库
    1205:加锁超时
    1211:当前用户没有创建用户的权限
    1216:外键约束检查失败,更新子表记录失败
    1217:外键约束检查失败,删除或修改主表记录失败
    1226:当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器
    1227:权限不足,您无权进行此操作
    1235:MySQL版本过低,不具有本功能

    可能的错误

    1.iptables端口没有开放3306

    2.change master to master_host='192.168.x.xx',master_user='xxx',master_password='xxx',master_port=3306,master_log_file='mysql-bin.000xxx',master_log_pos=xxx;

    3.没有给服务器权限登录数据库

    GRANT ALL PRIVILEGES ON *.* TO 'abgent'@"192.168.3.31" IDENTIFIED BY "abgent" WITH GRANT OPTION;

    4.stop slave ; start slave ; 重新试几次

    二.授权:

    命令:GRANT privileges ON databasename.tablename TO 'username'@'host'

    PS: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.

    例子: GRANT SELECT, INSERT ON mq.* TO 'dog'@'localhost';

    三.创建用户同时授权

    mysql> grant all privileges on mq.* to test@localhost identified by '1234';
    Query OK, 0 rows affected, 1 warning (0.00 sec)

    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)

    PS:必须执行flush privileges;

     

  • 相关阅读:
    Html语言基础
    acm练习(四)
    acm练习(三)
    acm练习(二)
    acm练习(一)
    android自定义控件属性
    android ViewGroup getChildDrawingOrder与 isChildrenDrawingOrderEnabled()
    java 用Arrays.binarySearch解读 快速定位数字范围
    android极光推送初步了解...
    GridView与ListView冲突
  • 原文地址:https://www.cnblogs.com/weizaiyes/p/9617639.html
Copyright © 2011-2022 走看看