mysql主从复制

 1、在阿里云服务器中修改my.cnf文件(一般在/etc/my.cnf)

 代码如下复制代码

   

[mysqld]
       log-bin=mysql-bin   //[必须]启用二进制日志
       server-id=1         //[必须]服务器唯一ID,默认是1,一般取IP最后一段
       binlog-do-db=wordpress   //[可选] 设置需要同步的数据,如果不设置将同步所有数据库
       binlog_ignore_db=mysql  //[可选] 忽略mysql数据,因为mysql数据库是mysql的一些帐户存放,这个没有必要同步

  2、来到从服务修改my.cnf

 

来源: https://yq.aliyun.com/ziliao/53330

 代码如下复制代码
[mysqld]
       log-bin=mysql-bin   //[必须]启用二进制日志
       server-id=2       //[必须]服务器唯一ID,默认是1,一般取IP最后一段

3、重启这两台服务器的mysql(第二台从服务器和第一台一样,这里就只写第一个的配置了)

一、启动方式

 

1、使用 service 启动:service mysqld start

 

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld start

 

3、使用 safe_mysqld 启动:safe_mysqld&

 

二、停止

 

1、使用 service 启动:service mysqld stop

 

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld stop

 

3、 mysqladmin shutdown 

 

三、重启

 

1、 使用 service 启动:service mysqld restart

 

2、使用 mysqld 脚本启动:/etc/inint.d/mysqld restart

提问 编辑摘要

 

我自己的方式 “/etc/init.d/mysql restart”

4、登录主服务器为从服务器授权

 代码如下复制代码
GRANT REPLICATION SLAVE ON *.* to 'sync'@'%' identified by 'sync'; //不建议使用root

 创建用户:

    CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';

 4、登录主服务器为从服务器授权

 代码如下复制代码
GRANT REPLICATION SLAVE ON *.* to 'sync'@'%' identified by 'sync'; //不建议使用root

“%”表示所有客户端都可能连,只要帐号,密码正确,此处可用从服务器IP代替,如192.168.145.226,加强安全。

5、查看主服务器的状态

 代码如下复制代码
show master status;
mysql> show master status;
+------------------+----------+-----------------------+------------------+
| File             | Position | Binlog_Do_DB          | Binlog_Ignore_DB |
+------------------+----------+-----------------------+------------------+
| mysql-bin.000004 |      106 | wordpress,wordpress   | mysql,mysql      |
+------------------+----------+--------------+---------------------------+

查看完状态就不要进行任何操作了,防止状态产生变化

6、登录从服务器配置

 代码如下复制代码
mysql> CHANGE MASTER TO 
    -> MASTER_HOST = '主服务器地址',
    -> MASTER_USER ='刚才新建的帐号',
    -> MASTER_PASSWORD='新建的用户密码',
    -> MASTER_PORT=3306,
    -> MASTER_LOG_FILE='mysql-bin.000003',
    -> MASTER_LOG_POS=106;

7、开启从服务器的复制功能

 代码如下复制代码
START SLAVE

8、查看从服务器的状态

 代码如下复制代码

mysql> show slave statusG
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 117.34.73.175
                  Master_User: mysqlsync
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 106
               Relay_Log_File: AY140429124852508639Z-relay-bin.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: 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: 106
              Relay_Log_Space: 106
              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: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
1 row in set (0.00 sec)
这里需要注意的

Slave_IO_Running = Yes
Slave_SQL_Running = Yes

这两个值必须为Yes,如果某一个为No就说说明主从是有问题的
如果会shell或python的话可以写一个检测脚本,检测这两个值是否都为Yes,如果有一个为No那就说明主从出现问题发邮件报警吧!

如果其中一个为yes的话你就需要检查一下了,我在操作的过程遇到了Slave_IO_Running为No了,这个时候你看一下 Last_IO_Error这里提示:error connecting to master ‘sync@218.244.**.**:3306′ – retry-time: 60  retries: 86400 (PS:**为打码),这里提示又无法连接到服务器,一般来说可能是帐号密码设置错误,或者服务器的防火墙给拦截了,经过检查阿里云开云盾开放了3306,但是没有还是不能,这个时候在从服务器直接登录,发现是空间商的问题,本地是可以的但是从服务器是没有办法登录。

9、这个时候你就可以在主服务器进行建表插入数据等等操作,看看从服务器是否已经同步了

可能在敲命令的时候敲错了一些东西,可以使用下边的sql语句进行修改

 代码如下复制代码

CHANGE MASTER TO MASTER_HOST='218.244.136.92'; //从服务器执行,意思是:修改主服务器的地址,底下意思相同
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000003'MASTER_LOG_POS=106;

在执行的时候需要先停止从服务器的同步,

停止同步

 代码如下复制代码

SLAVE STOP

修改完成之后记得开启
SLAVE START

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库 , 日志 , 服务器 , 数据 , 代码 配置 mysql主从配置详解、mysql主从配置、mysql主从复制配置、mysql 主从同步配置、linux mysql主从配置,以便于您获取更多的相关知识。

注意点:主从复制,前提是从库要和主库有相同的库和表,要不会报

Last_SQL_Error: Error 'Table 'mydatabase.sutdent' doesn't exist' on query. Default database: 'mydatabase'. Query: 'insert into sutdent values(2,'2345')'

主从复制配置的关键属性:

File            | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

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

| mysql-bin.000002 |      608 | mydatabase  | mysql            |                  |

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

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

 

设置从库只读:

 

# mysql -uroot -p
mysql> show global variables like "%read_only%";
mysql> flush tables with read lock;
mysql> set global read_only=1;
mysql> show global variables like "%read_only%";

 

将MySQL从只读设置为读写状态的命令:

mysql> unlock tables;
mysql> set global read_only=0;

 

  对于需要保证master-slave主从同步的salve库,如果要设置为只读状态,需要执行的命令为:

mysql> set global read_only=1;

     将salve库从只读状态变为读写状态,需要执行的命令是:

mysql> set global read_only=0;

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿的十万个为什么

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值