mysql 数据库主从复制教程

olei 2,920 views 1

准备装有 mysql 的两台服务器
IP 分别为:

xxx.xxx.xxx.1(主)

xxx.xxx.xxx.2(从)

授权

  • 将这两台 IP 授权,允许其它 IP 通过账号密码进行访问 (添加账号为 test,密码为 12345
  • 分别登录两台服务器,进入 mysql,输入:
  1. mysql> Grant all privileges on *.* to 'test'@'%' identified by '123456' with grant option;
  2. mysql> Flush privileges;

上述代码的意思是创建一个 test 用户,host=%,允许所有 IP 通过用户名 test 进行访问。添加完刷新权限。
此时两台机子的 mysql 应该是可以相互访问的,如果不可以,导致的原因有很多,最常见的是防火墙没关,或者是安全组没有放通 3306 端口 (从)

主数据库配置

  • 登录主服务器,进入 mysql 的配置文件/etc/mysql/mysql.conf.d/mysqld.cnf, 在 [mysqld]下面添加:
  1. server-id=1
  2. log-bin=master-bin
  3. log-bin-index=master-bin.index
  • 重启服务 (这个是 ubuntu 的重启方式之一):
  1. $ /etc/init.d/mysql restart
  • 进入 mysql,查看主服务器 mysql master 状态:
  1. mysql> show master status;
  2. +-------------------+----------+--------------+------------------+
  3. | File              | Position | Binlog_Do_DB | Binlog_Ignore_DB |
  4. +-------------------+----------+--------------+------------------+
  5. | master-bin.000001 |      245 |              |                  |
  6. +-------------------+----------+--------------+------------------+

 

日志 File 为 master-bin.000001,Position 为 245(这个得记下来,设置从服务的要用)

从数据库配置

  • 登录从服务器,进入 mysql 的配置文件/etc/mysql/mysql.conf.d/mysqld.cnf, 在 [mysqld]下面添加:
  1. server-id=10
  2. log-bin=master-bin
  3. log-bin-index=master-bin.index

server-id 可以是其他,但是不能与主服务器上的一样

从数据库连接主服务

  • 在从服务器中,登录数据库,输入:
  1. mysql> change master to
  2.     -> master_host = 'xxx.xxx.xxx.1',
  3.     -> master_user='test',
  4.     -> master_password='12345',
  5.     -> master_log_file='master-bin.000001',
  6.     -> master_log_pos= 245;
  7. Query OK, 0 rows affected, 2 warnings (0.13 sec)

启动 slave

  • 启动:
  1. mysql> start slave;
  2. Query OK, 0 rows affected (0.01 sec)
  • 查看状态:
  1. mysql> show slave status\G

显示的内容一定有这个情况才算配置正常:

  1. Slave_IO_Running: Yes
  2. Slave_SQL_Running: Yes

测试

  • 在主数据库上创建一个 test_zhucong 的数据库,创建一个 test

mysql数据库主从复制教程

可以看到,从数据库也相应的有了这个数据库以及表

注意

做主从复制时,首先确定两台服务器的 mysql 没任何自定义库 (否则只可以配置完后之前的东西没法同步, 或者两个库都有完全相同的库应该也是可以同步,图中主数据库有些数据库在从的里面没有,就是因为主从设置之前,创建了)

server_id 必须配置不一样

发表评论 取消回复
表情 图片 链接 代码

  1. olei
    olei 站长

    你好,各位

分享