当前位置:首页 > CN2资讯 > 正文内容

postgresql 多主复制

1天前CN2资讯


更新

其实本文主要来自www.digitalocean.com ,但是我没有买他们家的 VPS 用来 demo 了.只是用vagrant 来模拟了.

介绍

 

所谓 Mysql 的复制就是实时的把单一的数据集复制到另外一台服务器上. 这个配置称之为主从复制. 这是一个典型的操作配置. 我们接下来会有一个更加好的方案来实现. 以为多主(主-主)复制能够允许数据拷贝到的其他的服务器,这个大家都有,但是主要的不同在于能够提高单一服务器的读写性能. 这个设置会添加数据冗余,但是提高我们读取数据的性能.

假设我们下面的配置在2台 vps 上.我们称之为服务器 C 和服务器 D.

  • server c 3.3.3.3
  • server d 4.4.4.4

第一步, 安装和配置 mysql 在 c 机器上

首先,我们要安装mysql-server 和mysql-client 在服务器上,通过下面的命令来:

sudo apt-get install mysql-server mysql-client

mysql 默认只接受本地(127.0.0.1)的连接, 我们需要修改一些默认的配置来实现这个,我们需要修改/ etc/mysql/my.cnf 看到下面的内容:



#server-id = 1 #log_bin = /var/log/mysql/mysql-bin.log #binlog_do_db = include_database_name bind-address = 127.0.0.1



第一行用来标示当前的服务器,在我们的这个mysql 复制的配置中,我们需要这个标示,我们把它注释取消.第二行说明当前的binlog目录. 第三行说明当前需要同步那个数据库. 当然你可以指定很多的数据库,但是这里我们就需要一个. 最后一行说明我们允许连接的客户端在哪里.我们不需要本地的连接.注释了.



server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = example # bind-address = 127.0.0.1



重启服务器:

sudo service mysql restart

接下来,我们需要通过mysql 命令行来修改一些设置,

mysql -uroot -p

成功登陆之后,

mysql>

我们需要创建一个用户,用来复制数据, 我们给他叫replicator, 密码自取.

create user 'replicator'@'%' identified by 'password';

然后给他权限来复制数据.

grant replication slave on *.* to 'replicator'@'%';

这个用户不能够复制所有的库,它只能复制在配置文件中指定的数据库.

接下来,我们需要获取当前mysql server 的一些状态, 它会被用在之后的服务器 D 的设置上. 基本上就完成了本服务器的设置.

show master status;

它会输出下面的一些信息:



+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000001 | 107 | example | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)



第二步,安装配置服务器 D

刚开始的步骤是一样的,就是按照 mysql 服务器和客户端, 然后修改配置文件:

/etc/mysql/my.cnf

这个时候,它和 c 服务器有点区别, 我们会把它改为下面的内容:



server-id = 2 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = example # bind-address = 127.0.0.1



之后重启服务器, 登录创建用户.

sudo service mysql restart
mysql -u root -p 
create user 'replicator'@'%' identified by 'password';

接下来,需要在 d 这里创建一个数据库example,那个你想要同步的数据库.

create database example;

接着给这个用户权限用来复制:

grant replication slave on *.* to 'replicator'@'%';

下面就是最关键的一步了. 通过我们在 c 服务器上获取的信息连通两台服务器.

还是在 D 服务器 mysqlclient 上,键入下面的命令:



slave stop; change master to master_host = '3.3.3.3', master_user = 'replicator', master_password = 'password', MASTER_LOG_FILE = 'mysql-bin.000001', MASTER_LOG_POS = 107; slave start; 现在 D 是挂到了 C 上,我们需要反过来把 C 也挂到 D 上,查看一下 D 的` master status`:



show master status



+------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000004 | 107 | example | | +------------------+----------+--------------+------------------+ 1 row in set (0.00 sec)



第三步,在 C 上完成复制

其实很上面的设置一样的,就是:



slave stop; CHANGE MASTER TO MASTER_HOST = '4.4.4.4', MASTER_USER = 'replicator', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = 'mysql-bin.000004', MASTER_LOG_POS = 107; slave start;



注意修改你对应的 mysql 输出的信息,还有你的密码

上面的命令 mysql 会输出下面的类似信息:

Query OK, 0 rows affected (0.01 sec)

到这里,配置已经完成.

测试

我们这样,在 c 上创建一个表,然后在 d 上把它干掉,看看 c 上还有没有.

create database example;
create table example.dummy (id varchar(10)); #note here is ` not '

然后在 d 上看看有没有这个表:

show tables in example;

你会看到:



+-------------------+ | Tables_in_example | +-------------------+ | dummy | +-------------------+ 1 row in set (0.00 sec)



然后在 d 上:

drop table dummy;

c 上:

show tables;

你会看到:

Empty set (0.00 sec)

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/31610.html

    分享给朋友:

    “postgresql 多主复制” 的相关文章

    如何在VPS上轻松部署和管理Telegram机器人 | 详细指南

    1.1 创建Telegram机器人 在Telegram上创建一个机器人非常简单。我们只需要与@BotFather进行对话。@BotFather是Telegram官方提供的机器人管理工具,专门用于创建和管理机器人。通过发送/newbot命令,我们可以开始创建自己的机器人。@BotFather会引导我们...

    获取CloudCone优惠码,享受超值VPS主机折扣

    CloudCone 优惠码概述 在探索CloudCone之前,我想先聊聊关于优惠码的事情。CloudCone优惠码是指通过一些特定的方式获得的、可以享受价格折扣的代码。这些代码常常可以在购买VPS主机或其他服务时使用,帮助我节省一些开支。比如,有时候我能在优惠活动中找到让人心动的折扣,几乎是对我钱包...

    国内注册ChatGPT的安全与实用指南

    在使用ChatGPT服务时,安全与隐私保护是非常重要的。首先,我总是尽量避免在聊天或任何交流中输入敏感信息。无论是个人身份、财务信息,还是其他隐私内容,我都保持警惕,确保我的信息不会被泄露。即便是在与AI进行对话时,这种谨慎也同样必要,因为即使是最可信的平台也无法完全保障信息不被滥用。 还有一点是选...

    云服务器购买指南:选择适合你的云服务方案

    在我开始谈论云服务器购买指南时,首先让我给你解释一下“云服务器”是什么。简单来说,云服务器是基于云计算技术构建的虚拟服务器。它通过网络将计算、存储和其他资源结合在一起,提供灵活的计算能力。相比传统的物理服务器,云服务器的优势在于其高度的可扩展性、经济性和便捷性。你可以根据具体需求随时增减资源,而且没...

    DMIT优惠码的全面指南:如何获取与使用优惠码节省学习费用

    什么是DMIT优惠码? DMIT优惠码是专门为DMIT(多元智力测评与发展)相关服务设计的折扣码。这种优惠码可以在购买相关课程或服务时使用,帮助用户节省一定的费用。我第一次接触DMIT优惠码时,是在参加一场在线讲座的时候。讲者提到,如果有兴趣的朋友可以使用优惠码来享受折扣。我感到非常新奇,对这种数字...

    阿里云NTP服务器地址配置与使用详解

    阿里云 NTP 服务器概述 在谈论阿里云 NTP 服务器之前,我们需要了解一下什么是 NTP 服务器。NTP,全称网络时间协议,是用于计算机网络中同步计算机时间的协议。它确保网络中的所有设备都能正确地保持时间。这对于数据准确性和系统协调至关重要。无论是金融交易、日志记录还是基础设施监控,准确的时间都...