文档章节

MariaDB单机双实例主从复制

雁南飞丶
 雁南飞丶
发布于 2014/12/31 14:53
字数 1261
阅读 3222
收藏 117

MariaDB其实和mysql一样,非有啥不一样那就是名字不一样~.~!

开始~上篇实验是MariaDB的单机多实例安装

复制通常用来创建主节点的副本,通过添加冗余节点来保证高可用性,当然复制也可以用于其他用途,例如在从节点上进行数据读、分析等等。在横向扩展的业务中,复制很容易实施,主要表现在在利用主节点进行写操作,多个从节点进行读操作,mysql复制的异步性是指:事物首先在主节点上提交,然后复制给从节点并在从节点上应用,这样意味着在同一个时间点主从上的数据可能不一致,异步复制的好处在于它比同步复制要快,如果对数据的一致性要求很高,还是采用同步复制较好。

      最简单的复制模式就是一主一从的复制模式了,这样一个简单的架构只需要三个步骤即可完成:

           1 建立一个主节点,开启binlog,设置服务器id

           2 建立一个从节点,设置服务器id

           3 将从节点连接到主节点上

双实例端口3307主库,3308从库

3307主实例的mysqld配置

[mysqld2]
port=3307
socket=/tmp/mysql3307.sock #套接字文件
pid-file=/tmp/mysql3307.pid #PID文件目录
max_allowed_packet=1M  #允许插入的数据大小
net_buffer_length=2k  #套接字通信缓冲区大小
table_open_cache=4   #表告诉缓存的大小
sort_buffer_size=64k #排序buffer大小
thread_stack=128k   #每一个线程分配多大内存
basedir=/usr/local/mysql #多实例必须开启的安装数据库目录
datadir=/data/mydata2 #数据目录
server-id=244 #主从复制ID必须不一样
log-bin = master3307-bin  #必须开启
log-bin-index = master3307-bin.index  #必须开启
thread_concurrency=4  #4个线程
innodb_file_per_table = 1 #每表一空间
#mysql_pwd='teleframe'

3308从实例的mysqld配置

[mysqld3]
port=3308
socket=/tmp/mysql3308.sock
pid-file=/tmp/mysql3308.pid
max_allowed_packet=1M
net_buffer_length=2k
table_open_cache=4
sort_buffer_size=64k
thread_stack=128k
basedir=/usr/local/mysql
datadir=/data/mydata3
innodb_file_per_table = 1
server-id=245
log-bin=mysql3308-bin
relay-log = relay-log 
relay-log-index = relay-log-index
thread_concurrency=4
read-only = on

开始主从配置

步骤1、连接到主库上授权一个REPLICATION SLAVE 帐号,并且刷新授权表

            

[root@e3 mysql]# mysql -uroot -h127.0.0.1 -P3307 -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 8
Server version: 10.0.15-MariaDB-log Source distribution

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
| test1              |
+--------------------+
5 rows in set (0.00 sec)

MariaDB [(none)]> grant replication slave on *.* to 'repl'@'192.168.0.%' identified by 'repl';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show master status;
+-----------------------+----------+--------------+------------------+
| File                  | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+-----------------------+----------+--------------+------------------+
| master3307-bin.000005 |      632 |              |                  |
+-----------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

MariaDB [(none)]>

        2、连接到从库上指定主库,启动slave

[root@e3 ~]# mysql -uroot -p'teleframe' -h127.0.0.1 -P3308
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 10.0.15-MariaDB-log Source distribution

Copyright (c) 2000, 2014, Oracle, SkySQL Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> change master to master_host='192.168.0.244',master_user='repl',master_password='repl',master_port=3307,master_log_file='master3307-bin.000005',master_log_pos=632;
ERROR 1201 (HY000): Could not initialize master info structure for ''; more error messages can be found in the MariaDB error log #我这报错了,如果你跟我一样报错就执行下面的命令
MariaDB [(none)]> reset slave;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> change master to master_host='192.168.0.244',master_user='repl',master_password='repl',master_port=3307,;
Query OK, 0 rows affected (0.22 sec) #好了现在连接上了      master_log_file='master3307-bin.000005',master_log_pos=632  表示从主服务器那个二进制日志文件开始复制因为这是复制授权信息,所以没必要复制,在主服务器上可以查看show master status; 查看内容show binglog events in 'master-bin.000001';
MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.0.244
                  Master_User: repl
                  Master_Port: 3307
                Connect_Retry: 60
              Master_Log_File: master3307-bin.000005
          Read_Master_Log_Pos: 632
               Relay_Log_File: relay-log.000002
                Relay_Log_Pos: 4
        Relay_Master_Log_File: master3307-bin.000005
             Slave_IO_Running: No  #  从服务器有没有正常工作主要是看这个值是否YES
            Slave_SQL_Running: No  #
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 632
              Relay_Log_Space: 248
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 0
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: No
                  Gtid_IO_Pos: 
1 row in set (0.00 sec)
MariaDB [(none)]> start slave;  #好启动slave
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show slave status\G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.0.244
                  Master_User: repl
                  Master_Port: 3307
                Connect_Retry: 60
              Master_Log_File: master3307-bin.000005
          Read_Master_Log_Pos: 632
               Relay_Log_File: relay-log.000003
                Relay_Log_Pos: 540
        Relay_Master_Log_File: master3307-bin.000005
             Slave_IO_Running: Yes  #表示从服务器正常工作了
            Slave_SQL_Running: Yes  #
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 632
              Relay_Log_Space: 831
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 244
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
                   Using_Gtid: No
                  Gtid_IO_Pos:

来测试!

在主的上面创建一个库看从的是否可以复制到

主上创建

MariaDB [(none)]> create database kcwtest;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| kcwtest            |
| mysql              |
| performance_schema |
| test               |
| test1              |
+--------------------+
6 rows in set (0.00 sec)

从上查看

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| kcwtest            |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

可以复制!这样就实现单机实例复制,我做的3个实例,3306端口给默认的用,3307,3308端口做主从复制。

© 著作权归作者所有

雁南飞丶
粉丝 37
博文 184
码字总数 245949
作品 0
西安
运维
私信 提问
加载中

评论(2)

雁南飞丶
雁南飞丶 博主

引用来自“码农不会耕田”的评论

对大并发的写 有没有好的解决方案呢

redis memcache 读写分离
码农不会耕田
码农不会耕田
对大并发的写 有没有好的解决方案呢
MariaDB-MMM高可用群集

什么是MMM? MMM(MySQL主主复制管理器)是一套支持双主故障切换和双主日常管理的脚本程序。MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制,虽然叫做双主复制,但是...

cchenyz
2018/07/10
0
0
MariaDB 10.3 主从半同步复制

本文介绍MariaDB主从半同步复制,以上一篇《MariaDB 10.3 主从复制》为基础,介绍主从半同步复制配置。 1. 简介 MariaDB从10.3.3开始已经把半同步插件加入到Server中,因此在配置主从半同步时...

易语随风去
2018/06/04
0
0
初识MariaDB之5——主从复制原理及部署

一、原理简介 当前主流的数据库为了保证数据一致性,都采用支持事务类型的数据存储引擎,如innodb等,当一个事务提交后先写到事务日志中,在进行数据修改,并且将对数据产生任何影响的语句都...

qiao645
2018/06/29
0
0
mysql/mariadb主从复制架构配置及过程中出现的问题

两台CentOS7系虚拟主机: 分别是:主服务器172.16.75.1,从服务器172.16.75.2 使用的是mariadb-5.5.56,即centOS自带的软件版本 为了使实验结果显示精准,此处关闭两台服务器的防火墙和SELin...

花火殊途
2018/08/06
0
0
Docker Swarm 部署Mysql/Mariadb高可用主从复制集群

本文为转载,原文:Docker Swarm 部署Mysql/Mariadb高可用主从复制集群 1. MariaDB与MySQL MariaDB是MySQL源代码的一个分支,在意识到Oracle会对MySQL许可做什么后分离了出来(MySQL先后被S...

ChainZhang
2018/05/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

oracle ORA-39700: database must be opened with UPGRADE option

ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00704: bootstrap process failure ORA-39700: database must be opened with UPGRADE option 进程 ID: 3650 会话 ID: 29......

Tank_shu
今天
1
0
分布式协调服务zookeeper

ps.本文为《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之一 ZooKeeper ZooKeeper曾是Apache Hadoop的一个子项目,是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它...

ls_cherish
今天
4
0
聊聊DubboDefaultPropertiesEnvironmentPostProcessor

序 本文主要研究一下DubboDefaultPropertiesEnvironmentPostProcessor DubboDefaultPropertiesEnvironmentPostProcessor dubbo-spring-boot-project-2.7.3/dubbo-spring-boot-compatible/au......

go4it
昨天
1
0
redis 学习2

网站 启动 服务端 启动redis 服务端 在redis 安装目录下 src 里面 ./redis-server & 可以指定 配置文件或者端口 客户端 在 redis 的安装目录里面的 src 里面 ./redis-cli 可以指定 指定 连接...

之渊
昨天
2
0
Spring boot 静态资源访问

0. 两个配置 spring.mvc.static-path-patternspring.resources.static-locations 1. application中需要先行的两个配置项 1.1 spring.mvc.static-path-pattern 这个配置项是告诉springboo......

moon888
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部