mariadb单机多实例主从复制

准备工作:

停掉数据库服务:

systemctl stop mariadb.service

将主库的数据库文件拷贝一份作为从库数据:

cp -a -r /data/mysql_data/mysql/* /data/mysql_data/mysql2/

拷贝完启动:

systemctl start mariadb.service

步骤1:配置主库和从库多实例的cnf文件

主库和从库共用一个cnf文件, /etc/my.cnf

[mysqld]

log-bin=mysql-bin-log

server-id=1

datadir=/data/mysql_data/mysql

socket=/data/mysql_data/mysql/mysql.sock

innodb_flush_log_at_trx_commit=1

sync_binlog=1

pid-file=/run/mariadb/mariadb.pid

注意:为了使用事务的InnoDB在复制中最大的持久性和一致性,你应该指定innodb_flush_log_at_trx_commit=1,sync_binlog=1选项

[mysqld3307]

port=3307(单机多实例必须指定不同于3306的端口)

log-bin=mysql-bin-log

server-id=2  (不同于主库实例的id)

datadir=/data/mysql_data/mysql2

socket=/data/mysql_data/mysql2/mysql3307.sock

pid-file=/run/mariadb/mariadb3307.pid

步骤2:创建一个复制权限的账号:

mysql会赋予一些特殊的权限给复制线程,在备库运行的I/O线程会建立一个到主库的

TCP/IP连接,这意味着必须在主库创建一个用户,并赋予其合适的权限,备库I/O线程以该用户名连接到主库并读取其二进制日志,

创建用户账号语句:

mysql> CREATE USER [email protected];

mysql> GRANT REPLICATION SLAVE,REPLICATION CLIENT ON *.*

-> TO [email protected]‘127.0.0.1‘ INDENTIFIED BY ‘repl‘;

我们再主库和备库都创建该账号,注意我们把这个账户限制在本地网络,因为这是一个特权账号(尽管该账号无法执行select或修改数据,但仍然能从二进制日志中获得一些数据)

步骤3:锁定主机,注意二进制日志的位置并备份主机数据库

在主机上执行FLUSH TABLES WITH READ LOCK语句来刷新所有的表并阻断写操作:

master> FLUSH TABLES WITH READ LOCK;

当FLUSH TABLES WITH READ LOCK中的读操作锁生效时,用以下命令在主机读取当前的二进制日志名称和偏差的值:

master> SHOW MASTER STATUS;

File:         mysql-bin-log.000001

Positin:   1234

该命令显示列出了当前主库使用的binlog文件名File,和日志在文件中的偏差量Position,这两个参数在后面设置从库的时候会用到。它们代表了从库什么时候开始处理新的更新的坐标。

注意:如果之前主机没有开启bin-log功能,用SHOW MASTER STATUS命令显示的日志文件和position值为空,如果是这种情况,那么你后面要在从机日志里面指定的名称和positon值应该是空字符串(‘‘)和4.

接下来,继续在主库客户端窗口执行 FLUSH TABLES WITH READ LOCK;

注意:你可以使用以下命令在主机上重新打开写操作功能:

master> UNLOCK TABLES;

步骤4:初始化复制

连接从库:mysql -S /data/mysql_data/mysql2/mysql3307.sock

现在我们准备好在从库实例上初始化复制了。在从库实例上执行以下命令:

slave> SLAVE STOP;

接着,你要输入一条CHANGE MASTER 命令:

slave> CHANGE MASTER TO MASTER_HOST=‘127.0.0.1‘,

-> MASTER_USER=‘repl‘,

-> MASTER_PASSWORD=‘repl‘

-> MASTER_LOG_FILE=‘mysql-bin-log.000001‘,

-> MASTER_LOG_POS=1234;

参数含义:

  • MASTER_HOST:主库的ip
  • MASTER_USER:步骤2中授予REPLICATION SLAVE权限的用户
  • MASTER_PASSWORD:repl用户的密码
  • MASTER_LOG_FILE:show master status中的文件名
  • MASTER_LOG_POS: show master status中的position

最后在从库实例上开始复制:

slave> start slave;

步骤5:基础检查

进行数据插入来检验是否复制成功

也可以用下面的命令检查状态:

mysql> SHOW SLAVE STATUS\G;

mysql> SHOW PROCESSLIST\G;

时间: 2024-12-20 14:33:44

mariadb单机多实例主从复制的相关文章

MariaDB单机双实例主从复制

MariaDB其实和mysql一样,非有啥不一样那就是名字不一样~.~! 开始-上篇实验是MariaDB的单机多实例安装 双实例端口3307主库,3308从库 3307主实例的mysqld配置 [mysqld2] port=3307 socket=/tmp/mysql3307.sock pid-file=/tmp/mysql3307.pid max_allowed_packet=1M net_buffer_length=2k table_open_cache=4 sort_buffer_size

MariaDB单机多实例

我们在同一台服务器上运行3个mysql服务分别开启3306,3307,3308端口#################################################            安装mariadb                        ################################################略 #################################################            初始化环

MySQL(mariadb)多实例应用与多实例主从复制

MySQL多实例 mysql多实例,简单理解就是在一台服务器上,mysql服务开启多个不同的端口(如3306.3307,3308),运行多个服务进程.这些 mysql 服务进程通过不同的 socket来监听不同的数据端口,进而互不干涉的提供各自的服务. 在同一台服务器上,mysql 多实例会去共用一套 mysql 应用程序,因此在部署 mysql的时候只需要部署一次 mysql程序即可,无需多次部署.但是,mysql多实例之间会各自使用不同的 my.cnf 配置文件.启动程序和数据文件.在提供服

MySQL单机多实例安装并配置主从复制

单机多实例据说可以最大程度提高硬件使用,谁知道呢,但是以前的公司喜欢这样搞,我最近也在学习复制什么的,电脑搞不起两台虚拟机,刚好单机多实例可以解救我.下面就说说步骤. 承上文http://www.cnblogs.com/wingsless/p/4002806.html,我已经安装好了MySQL,不过这个是单实例的,要更改也可以,但是担心会出现问题,于是我将下面的东西删掉: 1 #rm -f /etc/init.dmysql 2 $rm -f /home/mysql/data 建立这么几个目录:

redis单机多实例_主从复制

上一篇讲到了redis单机单实例的安装http://my.oschina.net/xinxingegeya/blog/389155, 这一篇主要安装单机多实例,以及主从复制的配置.这就是一个redis的集群了. 单机多实例的配置 [[email protected] redis_7000]# pwd /opt/redis-2.8.19/redis_7000 [[email protected] redis_7000]# ./src/redis-cli -p 7000 127.0.0.1:7000

单机多实例MYSQL主从复制

今天有时间写写,不然心坎里总有点不爽.单机多实例一直都是屌丝的处事风格... 实验环境 RHEL6.5 172.24.0.130  3306 172.24.0.130  3307 01.本次采用的MYSQL二进制快速安装 下载地址: https://dev.mysql.com/downloads/mysql/ http://pan.baidu.com/s/1qYI0ybq http://pan.baidu.com/s/1pLHM2TH 密码: pg5t #截图操作 #根据需求选择对应的版本 02

Redis的make,make test,make install、单机多实例配置,以及API程序写数据!

最近学习王家林老师的大数据蘑菇云行动,要实现将Spark Streaming分析的数据写入到Redis.今天正好开始入手.  一.Ubuntu16安装Redis3.2.1 遇到了不少的问题,其中,make倒是没问题,make test的时候,出现了: !!! WARNING The following tests failed: *** [err]: Slave should be able to synchronize with the master in tests/integration/

MySQL 5.6对已有Mysql单实例的机器,再添加mysql数据库,实现单机多实例

一.需求: 对已有Mysql单实例的机器,再添加两个mysql数据库,实现单机多实例. 一个绑定在端口3306,另外两个绑定在端口3307,3308: 数据分别存放在/data/mysqldata./data/mysqldata2./data/mysqldata3 三个实例均采用InnoDB作为默认的存储引擎,字符编码采用UTF-8: 三个实例均采用相同的性能优化配置参数: MySQL的源码安装请看我的另一篇博客http://yylinux.blog.51cto.com/8831641/1677

amoeba针对MySQL单机多实例配置文件注释

MySQL单机多实例的读写分离可以通过第三方软件来实现,其中一个叫简单的读写分离软件就是今天所带给大家的amoeba软件. 本次使用的amoeba软件为amoeba-mysql-binary-2.1.0-RC5.tar.gz 本软件是基于JAVA环境运行的,所以需要JAVA环境支持,具体环境配置不做详解. 本文主要解释两个主配置文件. 1.dbServer.xml 这个文件配置的是父配置(用来给默认子配置补充配置项) 真实mysql服务器的端口,数据库名称,mysql用户及密码 主服务器,从服务