mysql互为主从配置

1 篇文章 0 订阅


一、MYSQL主从备份的原理

            mysql支持单向、异步复制,在复制的过程中,一个为主服务器,另一个为从服务器。主服务器进行的操作sql 操作都会记录到 bin-log 指定的文件中,如果没有指定,一般为mysql-bin.0000XX文件中。从服务器会将主服务器更新的日志复制到从服务器,然后在从服务器顺序做sql 操作,所以主服务的二进制日志必须开启。
             从服务器从主服务器备份不会干扰主服务器。
          

二、复制过程三部曲

         1. Salve 启动I/O进程连接Master,请求Master指定日志文件的指定位置或者最开始位置之后的日志。

          2. Master接到请求以后,负责复制的I/O进程将日志名称、更新日志的位置,日志的内容传输到Salve.

          3. Salve讲读取到的日志的内容追加到rely-log文件中,而把读取到的日志名称、更新日志的位置写到master-info文件中,以便下次读取的时候告诉主服务器从日志文件的什么位置开始读取。
              Salve将日志内容中的sql 操作在自己的服务器上相同的执行一遍。

三、实例配置

1. mysql 版本最好相同。

A :    192.168.0.103    linux     x86_64   mysql
B :    192.168.0.107    linux     x86_64   mysql
两台机器均启动mysql.

2. 关闭防火墙iptables ,这样可以使得两台机器的mysql相互交互。

3.创建mysql用户&配合mysql配置文件my.cnf(最好两台机器的用户名称相同) 

 在192.168.0.103 : useradd  replication
 在192.168.0.107 : useradd  replication

配置my.cnf
  
192.168.0.103
[mysqld]
log-bin=mysql-bin
server-id = 1
binlog-do-db=test
binlog-ignore-db=mysql

log-bin : 表示开启bin-log日志功能,这样I/O才会将日志复制到从机的rely-log中。
server-id : 表示服务器的ID,此为唯一机器标识。
binlog-do-db : 标识对指定数据库做日志记录,如果对多个数据库做日志记录,需加','分隔。
binlog-ignore-db : 标识不对指定数据库做日志记录。

192.168.0.107
mysqld
log-bin=mysql-bin
server-id = 2
binlog-do-db=test
binlog-ignore-db=mysql

4.授予从机用户同步日志的权限。

  grant replication slave on *.* to 'replication'@'192.168.0.107' identified by 'replication'

*************************** 1. row ***************************
                 Host: 192.168.0.107
                 User: replication
             Password: *D36660B5249B066D7AC5A1A14CECB71D36944CBC
          Select_priv: N
          Insert_priv: N
          Update_priv: N
          Delete_priv: N
          Create_priv: N
            Drop_priv: N
          Reload_priv: N
        Shutdown_priv: N
         Process_priv: N
            File_priv: N
           Grant_priv: N
      References_priv: N
           Index_priv: N
           Alter_priv: N
         Show_db_priv: N
           Super_priv: N
Create_tmp_table_priv: N
     Lock_tables_priv: N
         Execute_priv: N
      Repl_slave_priv: Y
     Repl_client_priv: N
     Create_view_priv: N
       Show_view_priv: N
  Create_routine_priv: N
   Alter_routine_priv: N
     Create_user_priv: N
           Event_priv: N
         Trigger_priv: N
             ssl_type: 
           ssl_cipher: 
          x509_issuer: 
         x509_subject: 
        max_questions: 0
          max_updates: 0
      max_connections: 0
 max_user_connections: 0
1 row in set (0.00 sec)

5.授予主机同步从机日志的权限(see #4)(在从机192.168.0.107上操作)
*************************** 1. row ***************************
                 Host: 192.168.0.103
                 User: replication
             Password: *D36660B5249B066D7AC5A1A14CECB71D36944CBC
          Select_priv: N
          Insert_priv: N
          Update_priv: N
          Delete_priv: N
          Create_priv: N
            Drop_priv: N
          Reload_priv: N
        Shutdown_priv: N
         Process_priv: N
            File_priv: N
           Grant_priv: N
      References_priv: N
           Index_priv: N
           Alter_priv: N
         Show_db_priv: N
           Super_priv: N
Create_tmp_table_priv: N
     Lock_tables_priv: N
         Execute_priv: N
      Repl_slave_priv: Y
     Repl_client_priv: N
     Create_view_priv: N
       Show_view_priv: N
  Create_routine_priv: N
   Alter_routine_priv: N
     Create_user_priv: N
           Event_priv: N
         Trigger_priv: N
             ssl_type: 
           ssl_cipher: 
          x509_issuer: 
         x509_subject: 
        max_questions: 0
          max_updates: 0
      max_connections: 0
 max_user_connections: 0
1 row in set (0.00 sec)
接下里就可以用:
  在192.168.0.103 :     mysql -h 192.168.0.107 -u replication -p   连接192.168.0.107上的mysql ,进行同步test 库中的表,pleae see test below:

For status now;

192.168.0.103

mysql> select * from EM;
Empty set (0.00 sec)

192.168.0.107
mysql> select * from EM;
Empty set (0.00 sec)

insert data on test.EM in IP 192.168.0.103
mysql> insert into EM values (22,'Kevin'); 
Query OK, 1 row affected (0.00 sec)

mysql> select * from EM;
+------+-------+
| a    | b     |
+------+-------+
|   22 | Kevin |
+------+-------+
1 row in set (0.00 sec)

you can see content in test.EM is similar to content on content in 192.168.0.103
mysql> select * from EM;
+------+-------+
| a    | b     |
+------+-------+
|   22 | Kevin |
+------+-------+
1 row in set (0.00 sec)








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要将三台MySQL服务器配置互为主从,您需要按照以下步骤进行操作: 1. 配置主服务器: - 在主服务器的配置文件中(通常是my.cnf或my.ini),启用二进制日志记录(binary logging)功能。将以下参数添加到配置文件中: ``` log_bin = /var/log/mysql/mysql-bin.log server_id = 1 ``` - 重启主服务器以使配置更改生效。 2. 配置从服务器1: - 在从服务器1的配置文件中,启用二进制日志记录功能,并设置一个唯一的服务器ID。将以下参数添加到配置文件中: ``` log_bin = /var/log/mysql/mysql-bin.log server_id = 2 ``` - 重启从服务器1以使配置更改生效。 3. 配置从服务器2: - 在从服务器2的配置文件中,启用二进制日志记录功能,并设置一个唯一的服务器ID。将以下参数添加到配置文件中: ``` log_bin = /var/log/mysql/mysql-bin.log server_id = 3 ``` - 重启从服务器2以使配置更改生效。 4. 创建主从复制用户: - 在主服务器上,使用以下命令创建一个用于复制的用户,并授予其复制权限: ```sql CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%'; FLUSH PRIVILEGES; ``` - 替换'password'为您选择的密码,并记住它。 5. 备份主服务器的数据: - 在主服务器上,使用适合您的备份方法进行数据备份。 6. 配置从服务器1开始复制: - 在从服务器1上,使用以下命令启动复制过程: ```sql STOP SLAVE; CHANGE MASTER TO MASTER_HOST='主服务器IP', MASTER_USER='replication_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='主服务器二进制日志文件', MASTER_LOG_POS=主服务器二进制日志位置; START SLAVE; ``` - 替换'MASTER_HOST'为主服务器的IP地址,'password'为步骤4中设置的密码,'主服务器二进制日志文件'和'主服务器二进制日志位置'为步骤5备份的主服务器二进制日志文件和位置。 7. 配置从服务器2开始复制: - 在从服务器2上,使用与步骤6相同的命令启动复制过程,但是将'MASTER_HOST'更改为从服务器1的IP地址。 现在,您的三台MySQL服务器应该已经配置互为主从。主服务器上的更改将自动复制到从服务器1和从服务器2。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值