博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ubuntu16.04下实现MySQL主从复制
阅读量:5033 次
发布时间:2019-06-12

本文共 2225 字,大约阅读时间需要 7 分钟。

因为这两天业务需求不是很多,昨天抽空研究了下MySQL的主从同步。

期间也遇到了许多问题,怕之后会忘记,也顺便记录下自己的成长经历。所以写这篇博文。

因为我是在VM虚拟机上进行的测试。

所以首先要把虚拟机的链接模式改为桥接模式。

在设置->硬件->网络适配器->网络连接里更改为桥接模式。

如果不是使用root用户登录,建议 sudo su 切换到Root用户安装,那就不用老是 sudo 了。

然后设置IP为静态IP,在终端里输入

vi /etc/network/interfaces

打开之后修改文件,增加下列代码。

#interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopbackauto ens33iface ens33 inet staticaddress 192.168.6.119netmask 255.255.255.0gateway 192.168.6.2#dns-nameserver 119.29.29.29

ens33是通过ifconfig命令进行查询的,每个人可能不一样。有人可能是eth0或者其他。这点千万不要弄错否则会连不上网络。

分别对主和从服务器进行上述操作,我的主服务器IP是192.168.6.119,从是192.168.6.200。

Ubuntu也可以通过图形界面的设置来设置静态IP。

 分别重启主从服务器的网卡。

查看能否互相ping通对方。

 

然后依次下载安装MySQL。在线安装还是很方便的。

apt-get install mysql-serverapt-get isntall mysql-client

 

在主从的终端分别里输入

vi /etc/mysql/mysql.conf.d/mysqld.cnf

打开配置文件,在[mysqld]模块里注释掉bind-address,用来允许远程访问数据库。

并在主服务器的[mysqld]模块里添加以下代码。

server-id = 1 #server-id 服务器唯一标识log_bin = master-bin #log_bin 启动MySQL二进制日志log_bin_index = master-bin.indexbinlog_do_db = myslave #binlog_do_db 指定记录二进制日志的数据库binlog_ignore_db = mysql #binlog_ignore_db 指定不记录二进制日志的数据库

在从服务器的数据库配置文件里加入以下代码

server-id = 2replicate-do-db =myslaverelay-log = slave-relay-binrelay-log-index = slave-relay-bin.index

 

下一步在MySQL命令行里更改登录主服务器MySQL创建从服务器用到的账户和权限

grant replication slave,reload,super on *.* to slave @192.168.6.200 identified by 'mypassword'

分别重启主从MySQL服务。

service mysql restart

 

登录主服务器的MySQL数据库,查看主数据库状态

show master status;

记住查询出来的file_set和Position字段的值,后面会用到。

 

在从服务器的数据库命令行里输入下列代码,用来登录Slave从服务器,连接Master主服务器

change master to master_host='192.168.6.199',master_port=3306,master_user='mydatabase',master_password='mypassword',master_log_file='master-bin.000003',master_log_pos=1698;

(master_host对应主服务器的IP地址,master_port对应主服务器的端口,master_log_file对应show master status显示的File列:master-bin.000003,master_log_pos对应Position列:1698,否则有可能出现同步失败。)

 

在登录slave服务器MySQL的状态下启动数据同步

start slave;

登录slave服务器MySQL的状态下查看同步状态

show slave status\G;

上面两个都为Yes的时候为同步成功,如果Slave_IO_Running为connecting时可能是用来登录Slave从服务器,连接Master主服务器里面的密码或者用户名输入错误,

或者是网络连接不成功,看看虚拟机的IP地址是否是你设置的IP。

 

如果Slave_IO_Running为NO 则

stop slave;reset slave;start slave;

现在你在Master数据库有任何的insert,delete,update操作都会被及时的更新到Slave数据库上。

在slave数据库上停止同步命令

stop slave;

 

转载于:https://www.cnblogs.com/lotus-white/p/7457896.html

你可能感兴趣的文章
什么是logger?
查看>>
基于FPGA与DSP协同处理PAL制_CameraLink_SDI高清视频图像传输卡
查看>>
一个Java程序员应该掌握的10项技能
查看>>
c#英文大小写快捷键
查看>>
tpframe免费开源框架又一重大更新
查看>>
一.go语言 struct json相互转换
查看>>
什么是架构设计
查看>>
程序员学习能力提升三要素
查看>>
PHP 微信错误状态返回码说明
查看>>
【4.1】Python中的序列分类
查看>>
html5 新属性
查看>>
ubuntu 移动文件
查看>>
BZOJ 4590: [Shoi2015]自动刷题机
查看>>
实现viewpager下的圆点滑动
查看>>
Linux CentOS6.5下编译安装MySQL 5.6.16【给力详细教程】
查看>>
58同城高性能移动Push推送平台架构演进之路
查看>>
如何回答面试中问到的Hibernate和MyBatis的区别
查看>>
设置Ubuntu 10.10版本的软件源
查看>>
android开发中的 Activity 与 Context 区别与联系
查看>>
数据库基线检查工具DB_BASELINE
查看>>