MySQL|Mariadb|数据库实现主从同步|主从复制|实时同步|实时复制|

tengxunyun cera

大家都知道,对于一个带数据库的项目来说,数据丢了,就相当于项目毁了。现在很多人都是数据库跟网站文件分开服务器的(即站库分离 + 图床),为的就是保护数据库。假如网站文件服务器挂了,可以重新再搞一台服务器来重新部署一下页面,但是如果数据库没了呢?那就全部数据没了。

现在很多人都有了备份数据的习惯,这是非常好的事情。但是备份一般我们现在也是用定时任务,在某个时间节点备份一次或多次,并没有说实时的备份这样。那么这样一来还是存在风险。因此,今天我们要讲的就是MySQL(Mariadb)数据库数据库的实时备份(专业术语叫主从同步,即有一台或者多台备用服务器,实时同步主要数据库服务器的内容)

下面我们正式开始,首先我们要准备至少2台机器,假设一台是我们网站的数据库服务器A,另一台是用来实时同步A服务器的备用服务器B。

目的:实现当A服务器的数据库有变动时,实时同步所有变动到B服务器。

我的测试环境是Debian + Mariadb数据库,提示:主从服务器的数据库版本最好相同。

安装Mariadb数据库并设置root密码为123456,主从服务器的安装方法都是一样的

apt install mariadb-server -y
mysql -uroot -e "set password for [email protected]'localhost' = password('123456');"
mysql -uroot -e "flush privileges;"

一、配置主服务器A

1、修改MySQL(Mariadb)数据库的配置文件,在配置文件的[mysqld]节点下新增server-id和log-bin参数

Debian的Mariadb配置文件是/etc/mysql/mariadb.conf.d/50-server.cnf

打开该配置文件,并找到[mysqld]节点,在该节点下增加两个参数

server-id=1

log-bin=mysql-bin

注意:如果节点下之前就有上面两个参数则不需要重新添加。server-id=1中的1是唯一标识,大家可以自行修改成其它数字,只要不跟后面的从服务器的id相同即可。log-bin表示的是日志文件,mysql-bin是文件名,也是可以大家随意修改的。

修改后如下图:

2、设置MySQL(Mariadb)数据库允许远程连接

把/etc/mysql/mariadb.conf.d/50-server.cnf配置文件中的bind-address = 127.0.0.1只允许本机连接改成bind-address = 0.0.0.0允许任意机器连接,要不然后面从服务器会连接不上主服务器

3、登录MySQL(Mariadb)数据库,添加给从服务器用来登录和同步数据使用的账号

mysql -uroot -p123456

grant replication slave on . to [email protected]’%’ identified by ‘123456’;

注意输入结尾的分号,其中.表示所有数据库,repl是用户名,123456是密码,%表示允许所有IP连接,如果想只允许指定IP进行同步,则可以将%替换成具体的IP,如果是想允许某个IP段访问,则可以改成这种格式:192.168.1.%,表示允许192.168.1.1-12.168.1.255的IP进行访问。

4、添加完成后输入exit退出数据库,然后systemctl restart mysql重启数据库服务

5、登录MySQL(Mariadb)数据库

mysql -uroot -p123456

show master status;

记录下File和Position的值,后面配置从服务器的时候需要用到。到此为止,主服务器的配置就已经完成了。

二、配置从服务器B

1、修改MySQL(Mariadb)数据库的配置文件,在配置文件的[mysqld]节点下新增server-id参数

Debian的Mariadb配置文件是/etc/mysql/mariadb.conf.d/50-server.cnf

打开该配置文件,并找到[mysqld]节点,在该节点下增加两个参数

server-id=2

注意:如果节点下之前就有上面两个参数则不需要重新添加。server-id=2中的1是唯一标识,大家可以自行修改成其它数字,注意不要跟之前配置的主服务器的id相同即可。

2、配置主服务器的连接账号密码等信息

mysql -uroot -p123456

change master to master_host=’你的主服务器的IP’,master_port=3306,master_user=’主服务器添加的账号repl’,master_password=’密码123456′,master_log_file=’mysql-bin.000001′,master_log_pos=313;

log_file就是主服务器File的值,master_log_pos就是主服务器Position的值。

接着执行start slave;启动同步功能

然后执行show slave status \G;查看同步状态

看到以下两个参数是YES就说明主从同步已经配置成功。

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

接下来可以在主服务器上尝试新建数据库,建表,增删改数据,看看是不是所有操作都会同步到从服务器上去了?

cera aliyun tengxunyun cloudiplc

相关推荐

腾讯云数据库mysql备份恢复

腾讯云数据库#mysql#备份恢复 为保证数据的完整性和可靠性,MySQL数据库提供备份恢复功能来保障数据的可恢复性,默认备份保留天数为7天。 官方网站:腾讯云 云数据库 MySQL数据库产品提供如下两种备份方式: 自动备份:可以指定选择每周的哪几天,在每天的哪个时间段来进行全量的常规物理备份。系统会自动根据设置的备份周期和备份时间执行备份操作。 手动备份:用户可以手动执行备份腾讯云MySQL数据库的操作来生成备份,每天最多支持生成10个手动备份。 查看腾讯云数据库mysql备份列表 在腾讯云MySQL数据库列表界面选择要操作的#腾讯云MySQL#数据库,点击腾讯云MySQL数据库ID或者腾讯云MySQL数据库右侧的“管理”按钮,进入基本信息界面,选择备份恢复,查看备份 可以点击“选择时间范围”选框来修改要查看的备份的时间范围。 默认备份保留时间为7天。 活动地址:腾讯云 618云聚惠 腾讯云数据库mysql备份设置 在腾讯云MySQL数据库列表界面选择要操作的腾讯云MySQL数据库,点击腾讯云MySQL数据库ID或者腾讯云MySQL数据库右侧的“管理”按钮,进入基本信息界面,选择备份恢复界面。 点击“备份设置”,弹出备份设置页面。根据需要修改备份时间和日期,点击“确定”按钮,可以设置自动备份的周期和时间。 腾讯云数据库mysql手动备份 在腾讯云MySQL数据库列表界面选择要操作的腾讯云MySQL数据库,点击腾讯云MySQL数据库ID或者腾讯云MySQL数据库右侧的“管理”按钮,进入基本信息界面,选择备份恢复界面。 点击“备份腾讯云MySQL数据库”按钮,弹出备份腾讯云MySQL数据库页面。 在备份腾讯云MySQL数据库页面点击“确定”,开始执行手动备份。 腾讯云数据库mysql恢复备份 在腾讯云MySQL数据库列表界面选择要操作的腾讯云MySQL数据库,点击腾讯云MySQL数据库ID或者腾讯云MySQL数据库右侧的“管理”按钮,进入基本信息界面,选择备份恢复页面。 选择要恢复的备份,点击右侧“操作”栏的“恢复”按钮。 在弹出的恢复设置选框中,可以选择恢复到“新建腾讯云MySQL数据库”还是“当前腾讯云MySQL数据库” 1) 点击恢复到“新建腾讯云MySQL数据库”,点击“确定”按钮,将跳转到新建腾讯云MySQL数据库页面,选择所需腾讯云MySQL数据库规格后新建腾讯云MySQL数据库,备份的数据将在腾讯云MySQL数据库创建完毕后恢复到新建腾讯云MySQL数据库中。 2) 点击恢复到“当前腾讯云MySQL数据库”,点击“确定”按钮,备份的数据将恢复在当前腾讯云MySQL数据库中。

腾讯云MySQL数据库|拼团优惠|8元|一年只要72元

腾讯云数据库#拼团#优惠开启,#MySQL##云数据库#优惠价8元/月,购买3个月送1个月,一年只要72元, 腾讯云MySQL数据库拼团优惠8元/月 云厂商:腾讯云; 配置:#1G内存##50G硬盘# MySQL#基础版#数据库; 优惠价格:8月/月,买3个月还送1个月,一年只要72元; 活动时间:2019年1月10日-1月25日; 活动地址:腾讯云数据库拼团特惠8元/月优惠活动

永久免费科索沃PHP|MYSQL虚拟主机

1 GB空间 每月50 GB流量 5个邮箱账户 5个#数据库# CWP Pro面板 免费Let’s Encrypt SSL 绑定一个域名,或者用他们提供的#免费#子域名 服务器在科索沃 免费注册链接:https://mya.illyhosting.com/cart.php?a=add&pid=79 我也撸了一个,顺手丢了个域名上去测试一下科索沃的速度,果然免费的空间能用就行了,速度我这里不太行,楼下有个大哥说还行,大家自己测吧  

记录WordPress通过数据库批量替换文字标题及文章内容

WordPress是目前使用比较广泛的博客搭建程序,很多个人博客乃至企业站点也使用的#WordPress#来搭建。建站时间长了,难免会碰到要批量修改文章内容或者标题的情况,特别是要批量处理某个词语的情况。这里记录了比较简单的方法,通过简单的两段SQL代码,来从WordPress数据库当中实现批量修改。 1、批量修改文章标题 修改文字标题代码如下,其中“yangmao”是将被修改的词语,“羊毛”是将要修改成的词语。 UPDATE wp_posts SET post_title = REPLACE( post_title, ‘yangmao’, ‘羊毛’ ); 2、批量修改文章内容 下面代码是修改文章正文内容。使用方式和修改文章标题是一致的。 UPDATE wp_posts SET post_content = REPLACE( post_content, ‘yangmao’, ‘羊毛’ ); 3、在哪里修改? 通过phpmyadmin进入到数据库管理页面后,按下图操作即可。  

微信扫一扫,分享到朋友圈

MySQL|Mariadb|数据库实现主从同步|主从复制|实时同步|实时复制|