mysql数据库主从复制教程

准备装有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没任何自定义库(否则只可以配置完后之前的东西没法同步,或者两个库都有完全相同的库应该也是可以同步,图中主数据库有些数据库在从的里面没有,就是因为主从设置之前,创建了) server_id必须配置不一样

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

搭建属于你自己的维基站点:MediaWiki

MediaWiki 是一个全球著名的开源的,运行于 PHP+MySQL 环境下的 wiki 程序 。例如,全球最大的 wiki 项目 维基百科,就是使用 Med...

56460
来自专栏公众号_薛勤的博客

CentOS 6.5下RPM方式(重新)安装MySQL 5.7.21从头到尾篇

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables ...

11120
来自专栏L宝宝聊IT

Mysql备份与还原——xtrabackup

上次我们介绍了采用逻辑备份mysqldump 备份方式,其最大的缺陷就是备份和恢复速度都慢,但如果数据库非常大,那再使用 mysqldump 备份就不太适...

45930
来自专栏日常分享

Oracle常用数据库系统表单以及SQL的整理

  因为最近涉及到了一些数据库的归档,备份等工作,所以一部分的重心放在了数据库上,毕竟之前对数据库的了解也只停留在了一般的建表,查询,最多最多再写一写触发器之类...

15510
来自专栏散尽浮华

Mysql主从同步(1)-主从/主主环境部署梳理

Mysql复制概念说明 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一...

39150
来自专栏北京马哥教育

原创投稿 | 如何为Django添加中文搜索服务

云豆贴心提醒,本文阅读时间7分钟 在使用python的过程中,必然会设计到如何创建web应用,而搜索功能却最为常见,该文档包含了如何整合haystack,el...

296100
来自专栏C/C++基础

MySQL设置远程访问

在MySQL Server端,执行mysql 命令进入mysql 命令模式。使用grant命令用来建立新用户,指定用户口令并增加用户权限。命令格式如下:

19110
来自专栏程序你好

如何在SQL Server中将表从一个数据库复制到另一个数据库

23040
来自专栏前端vue

对数据进行一些基本操作(四)

完整代码 ↓ ↓ ↓ ↓ github地址:https://github.com/jgsrty/jianshu_node 码云地址:https://gite...

16940
来自专栏数据库

SQLite 使用方法详解

提供了对 SQLite 数据库的完全支持。应用中的任何类(不包括应用外部的类)均可按名称访问您所创建的任何数据库。如果想让自己创建的数据库供外部应用使用,请使用...

24060

扫码关注云+社区

领取腾讯云代金券