mysql在同一台机器上实现主从_同一台主机上的MySQL主从复制

MySQL复制是使来自一个MySQL数据库服务器(主数据库)的数据自动复制到一个或多个MySQL数据库服务器(从数据库)的过程。它通常用于在多台服务器上扩展读取访问权限以实现可伸缩性,尽管它也可以用于其他目的,例如故障转移或分析从属服务器上的数据,以免使主服务器过载。

由于主从复制是单向复制(从主到从),因此只有主数据库用于写操作,而读操作可能会散布在多个从数据库上。这意味着如果将主从复制用作横向扩展解决方案,则需要至少定义两个数据源,一个用于写操作,另一个用于读操作。

MySQL主从复制

MySQL开发人员通常只在一台计算机上工作,并且倾向于将整个开发环境放在该计算机上,并且逻辑上他们不依赖于网络或Internet连接。如果需要主从复制,例如因为他们需要在开发环境中测试复制,然后再将更改部署到其他地方,则他们必须在同一台计算机上创建复制。尽管单个MySQL实例的设置非常简单,但是我们需要付出额外的努力来设置第二个实例,然后再进行主从复制。

在本分步教程中,我选择了Ubuntu Linux作为主机操作系统,并且提供的命令适用于该操作系统。如果要在其他操作系统上设置MySQL主从复制,则需要对其特定命令进行修改。但是,在同一台计算机上设置MySQL主从复制的一般原则对于所有操作系统都是相同的。

MySQL主从复制

第一个MySQL实例的安装

如果您已经在计算机上安装了一个MySQL数据库实例,则可以跳过此步骤。

在Ubuntu上安装MySQL的最简单方法是在终端提示符下运行以下命令:

sudo apt-get install mysql-server

在安装过程中,系统将提示您设置MySQL root用户的密码。

配置 mysqld_multi

为了有效地在同一台机器上管理两个MySQL实例,我们需要使用mysqld_multi。

设置的第一步mysqld_multi是[mysqld]在现有my.cnf文件中创建两个单独的组。my.cnfUbuntu 上文件的默认位置是/etc/mysql/。因此,请my.cnf使用您喜欢的文本编辑器打开文件,然后将现有[mysqld]组重命名为[mysqld1]。这个重命名的组将用于第一个MySQL实例的配置,也将被配置为主实例。与在MySQL主从复制中一样,每个实例必须具有自己唯一的server-id,在[mysqld1]组中添加以下行:

server-id = 1

由于[mysqld]第二个MySQL实例需要一个单独的组,因此请[mysqld1]使用所有当前配置复制该组,然后将其粘贴到同一my.cnf文件中。现在,将复制的组重命名为[mysqld2],并在从站的配置中进行以下更改:

server-id = 2

port = 3307

socket = /var/run/mysqld/mysqld_slave.sock

pid-file = /var/run/mysqld/mysqld_slave.pid

datadir = /var/lib/mysql_slave

log_error = /var/log/mysql_slave/error_slave.log

relay-log = /var/log/mysql_slave/relay-bin

relay-log-index = /var/log/mysql_slave/rela

你可能感兴趣的:(mysql在同一台机器上实现主从_同一台主机上的MySQL主从复制)