mysql主从怎么搭建 mysql主从搭建原理

如何在一台windows主机上搭建mysql主从复制

1、首先要在本地建立两个mysql服务(参考这里),指定不同的端口。这里一个主(3306),一个从(3307)。

成都创新互联公司-专业网站定制、快速模板网站建设、高性价比荔城网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式荔城网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖荔城地区。费用合理售后完善,10余年实体公司更值得信赖。

2、然后修改主配置文件:

[mysqld]

server-id = 1

binlog-do-db=test #要同步的数据库

#binlog-ignore-db=mysql #不同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的

log-bin=mysql-bin #要生成的二进制日记文件名称

修改从配置文件:

[mysqld]

server-id = 2

log-bin = mysql-bin

replicate-do-db=test

3、在主库添加一个用户 repl 并指定replication权限

create user 'repl'@'127.0.0.1' identified by 'asdf';

GRANT REPLICATION SLAVE ON *.* TO 'repl'@'127.0.0.1'; -- --这里指定数据库(test.*)时报错,而指定全库(*.*)时会成功。

4、保持主从mysql的test数据库初始状态一致。

一般是先将所有的表加读锁,然后copy磁盘上的数据库文件夹。这里直接停止服务,然后将数据文件拷贝过去。

5、在主数据库里面运行show master status;记下file和position字段对应的参数。

mysql show master status;

+------------------+----------+--------------+------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |

+------------------+----------+--------------+------------------+

| mysql-bin.000001 | 107 | test | |

+------------------+----------+--------------+------------------+

1 row in set (0.00 sec)

6、在从库设置它的master:

mysql change master to master_host='127.0.0.1',master_port=3306,master_user='repl',master_password='asdf',master_log_file='mysql-bin.000001',master_log_pos=107;

Query OK, 0 rows affected (0.19 sec)

这里的master_log_file和master_log_pos对应刚才show master status记下的参数。

7、在从库开启从数据库复制功能。

slave start;

mysql slave start;

Query OK, 0 rows affected (0.00 sec)

在从库可以通过show slave status来查看一些参数。

8. 此时在主库创建表或插入数据,在从库就会很快也能看到了。

-- 主库

mysql create table tianyc_02(b int);

Query OK, 0 rows affected (0.16 sec)

mysql insert into tianyc_02 values(2013);

Query OK, 1 row affected (0.13 sec)

-- 从库

mysql show tables;

+----------------+

| Tables_in_test |

+----------------+

| tianyc_01 |

| tianyc_02 |

+----------------+

2 rows in set (0.00 sec)

mysql select * from tianyc_02;

+------+

| b |

+------+

| 2013 |

+------+

1 row in set (0.00 sec)

同理,可以搭建第二、第三个从节点。

备注:两个服务的serve_id必须不同,否则在开启复制功能时会提示错误

mysql slave start;

ERROR 1200 (HY000): The server is not configured as slave; fix in config file or with CHANGE MASTER TO

这里设置的主节点id为1,从节点id为2。也可以按照ip或端口进行设置,好用来区分。

注意:

* 主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间,主从数据不一致。

* 如果主从的网络断开,从会在网络正常后,批量同步。

* 如果对从进行修改数据,那么很可能从在执行主的bin-log时出现错误而停止同步,这个是很危险的操作。所以一般情况下,非常小心的修改从上的数据。

centos 怎么搭建mysql主从库

在配置Mysql数据库主从复制集群的时候要保证:

1.主从服务器操作系统版本和位数一致。

2.Mysql版本一致。

为了保证稳定性,最好服务器操作系统和Mysql数据库环境一致。

CentOS服务器上Mysql的安装方法可以参见博客:

服务器配置:

Master:192.168.1.18

Slave:192.168.1.16

Master(192.168.1.18)服务器:

1.编辑/etc/my.cnf

[root@jhq0229 ~]# vim /etc/my.cnf

2.配置

[plain] view plain copy print?

[mysqld]

datadir=/data/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

#主从复制配置

innodb_flush_log_at_trx_commit=1

sync_binlog=1

#需要备份的数据库

binlog-do-db=orders

#不需要备份的数据库

binlog-ignore-db=mysql

#启动二进制文件

log-bin=mysql-bin

#服务器ID

server-id=1

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

[mysqld_safe]

log-error=/var/log/mysqld.log

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

若没有配置binlog-do-db和binlog_ignore_db,表示备份全部数据库。

3.重启Mysqld服务

[root@jhq0229 ~]# service mysqld restart

4.为从Mysql创建用户

登录

[root@jhq0229 ~]# mysql -uroot -p

Enter password:

创建用户

mysql create user 'mastj'@'192.168.1.16' identified by '123456';

配置主从复制权限

mysql grant replication slave on *.* to 'mastj'@'192.168.1.16' identified by '123456';

若orders数据库中已经有数据,还需要:

锁定数据库

mysql flush tables with read lock;

将数据导入到从数据库,方法有多种,我是用Navicat复制的,复制完成后:

查看master状态并解锁:

[html] view plain copy print?

mysql show master status;

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000003 | 2005 | orders | mysql | |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

mysql unlock tables;

Slave(192.168.1.16)服务器:

1.配置服务ID

[root@jhq0113 ~]# vim /etc/my.cnf

在[mysqld]下面加入

server-id=2

重启Mysql服务

[root@jhq0113 ~]# service mysqld restart

2.配置复制

登录mysql

[root@jhq0113 ~]# mysql -uroot -p

执行

mysql change master to master_host='192.168.1.18',

master_user='mastj',

master_password='123456',

master_port=3306,

master_log_file='mysql-bin.000003',

master_log_pos=2005,

master_connect_retry=10;

参数详解:

master_host:主服务器的IP。

master_user:配置主服务器时建立的用户名

master_password:用户密码

master_port:主服务器mysql端口,如果未曾修改,默认即可。

master_log_file:日志文件名称,填写查看master状态时显示的File

master_log_pos:日志位置,填写查看master状态时显示的Position

master_connect_retry:重连次数

启动进程

mysql start slave;

检查主从复制状态

[plain] view plain copy print?

mysql show slave status\G

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 192.168.1.18

Master_User: mastj

Master_Port: 3306

Connect_Retry: 10

Master_Log_File: mysql-bin.000003

Read_Master_Log_Pos: 2369

Relay_Log_File: jhq0113-relay-bin.000002

Relay_Log_Pos: 647

Relay_Master_Log_File: mysql-bin.000003

Slave_IO_Running: Yes

Slave_SQL_Running: Yes

若Slave_IO_Running和Slave_SQL_Running均为Yes,则表示连接正常。

此时就可以测试主从复制了。

如何在一台windows主机上搭建mysql主从配置

如何在一台windows主机上搭建mysql主从配置

1、首先要在本地建立两个mysql服务(参考这里),指定不同的端口。我这里一个主(3306),一个从(3307)。

2、然后修改主配置文件:

[mysqld]

server-id = 1

binlog-do-db=test #要同步的数据库

#binlog-ignore-db=mysql #不同步的数据库,如果指定了binlog-do-db这里应该可以不用指定的

log-bin=mysql-bin #要生成的二进制日记文件名称

安全最重要!MySQL配置主从复制,主主复制

为了保障数据的安全与稳定性,我们常用数据库的主从复制与主主复制来实现。主从复制为从机实时拷贝一份主机的数据,当主机有数据变化时,从机的数据会跟着变,当从机数据有变化时,主机数据不变;同样地,主主复制就是,多个主机之间,只要有一个主机的数据变化了,其它主机数据也会跟着变化。

添加以下内容

如果你是使用我之前那种方式启动的MySQL,那么你只需要去你相关联的宿主机的配置文件夹里面去建立一个 my.cnf 然后写入上面的类容就好了。

比如:我的启动命令如下(不应该换行的,这里为了方便查看,我给它分行了)

那么我只需要在 /docker/mysql_master/conf 这个目录下创建 my.cnf 文件就好了。

这个命令是需要在容器里面执行的

docker重启mysql会关闭容器,我们需要重启容器。

确保在主服务器上 skip_networking 选项处于 OFF 关闭状态, 这是默认值。 如果是启用的,则从站无法与主站通信,并且复制失败。

我的命令如下

在从服务器配置连接到主服务器的相关信息 (在容器里面的mysql执行)

上面代码的xxxxx你需要换成你的IP,docker 查看容器 IP 的命令如下:

启动的那个从服务器的线程

测试的话,你可以在主服务器里面,创建一个数据库,发现从服务器里面也有了,就成功了。

如果你还想要一个从服务器,那么你只需要按照上面配置从服务器再配置一个就行了,新建的从服务器,会自动保存主服务器之前的数据。(测试结果) 如果你上面的主从复制搞定了,那么这个主主复制就很简单了。我们把上面的从服务器也改成主服务器

1)、修改上面的从服务器的my.cnf文件,和主服务器的一样(注意这个server-id不能一样)然后重启服务器 2)、在从服务器里面创建一个复制用户创建命令一样(这里修改一下用户名可以改为 repl2) 3)、在之前的主服务器里面运行下面这个代码

上面主要是教你怎么搭建一个MySQL集群,但是这里面还有很多其它的问题。也是我在学习过程中思考的问题,可能有的小伙伴上来看到文章长篇大论的看不下去,只想去实现这样一直集群功能,所以我就把问题写在下面了。

1)、MySQL的replication和pxc MySQL的集群方案有replication和pxc两种,上面是基于replication实现的。

replication: 异步复制,速度快,无法保证数据的一致性。 pxc: 同步复制,速度慢,多个集群之间是事务提交的数据一致性强。

2)、MySQL的replication数据同步的原理 我们在配置的时候开启了它的二进制日志,每次操作数据库的时候都会更新到这个日志里面去。主从通过同步这个日志来保证数据的一致性。

3)、可否不同步全部的数据 可以配置,同步哪些数据库,甚至是哪些表。

4)、怎么关闭和开始同步

5)、我就我的理解画出了,主从、主从从、主主、复制的图。

往期推荐:

利用Docker仅花1分钟时间安装好MySQL服务

Linux下MySQL 5.7的离线与在线安装(图文)

Linux下安装MySQL8.0(收藏!)


当前标题:mysql主从怎么搭建 mysql主从搭建原理
新闻来源:http://myzitong.com/article/docjcoi.html