zoukankan      html  css  js  c++  java
  • MariaDB主从复制虚拟机实战

    MariaDB简介:

      MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

      MariaDB基于事务的Maria存储引擎,替换了MySQLMyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎

    安装参考如下链接:

    https://www.cnblogs.com/zhanzhan/p/7729981.html

    虚拟机IP信息:

    主库(写库):192.168.147.200

    从库(读库):192.168.147.201

    这里我使用的是一主一从的模式。两台虚拟机上都安装好mariadb后就可以进行主从复制操作。

    主库:

      登录mariadb后创建test数据库并创建一张user表,接着插入几条数据,命令如下:

    >mysql -uroot -p 

    Enter password:

    >create database test;

    >show databases;

    >use test;

    >create table user(id int(11),name varchar(255));

    >show tables;

    >insert into user values(1,"xiaoming");

    >insert into user values(2,"xiaowang");

    >select * from user;

     退出mariadb控制台,在shell中使用如下命令将主库的数据导出并导入到从库数据库中:

    >mysqldump -uroot -p --opt --all-databases >/mydata.sql

    Enter password:

    >scp -r /mydata.sql root@192.168.147.201:/ 

    root@192.168.147.201's password:

    输入从库服务器密码后复制主库旧数据成功。

    从库:

    mysql -u root -p  </mydata.sql

    Enter password: 

    输入从库mariadb的密码后导入成功(可以进数据库查看)。

     主库:

    >vi /etc/my.cnf

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    server_id=1#主机的标识
    log-bin=mysql-bin#确保可写入的日志文件
    binlog_format=mixed#二进制日志的格式,
    binlog-do-db=test#允许主从复制数据库
    binlog-ignore-db=mysql#不允许主从复制的数据库

    切记是在[mysqld]下配置要复制的数据库和binlog相关信息,保存退出后进行从库授权

    >grant replication slave on *.* to slave@'192.168.147.201' identified by '123456';

    重启主库mariadb:

    >systemctl restart mariadb;

    从库:

    >vi /etc/my.cnf

    [mysqld]
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    # Disabling symbolic-links is recommended to prevent assorted security risks
    symbolic-links=0
    server_id=2#从机的标识
    log-bin=mysql-bin#确保可写入的日志文件
    binlog_format=mixed#二进制日志的格式,
    replicate_wild_do_table=test.%#要同步的数据库
    replicate_wild_ignore_table=mysql.%#不允许主从复制的数据库

    切记是在[mysqld]下进行binlog和要复制的数据库配置,保存后退出。

    重启从库mariadb:

    > systemctl restart mariadb;

    主库:

    >mysql -uroot -p

    Enter password: 

    > show master status;

     上面的信息将在从库中用到。

    从库:

     >mysql -uroot -p

    Enter password:

    >change master to master_host='192.168.147.200',master_user='slave',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=245;

    >start slave;

    >show slave statusG

    若看到2个红色箭头都是yes,则主从同步成功。

    接下来我们进行主从复制测试。

    主库:

    >mysql -uroot -p 

    Enter password: 

    >use test;

    >select * from user;

    >insert into user values(3,"zhangsan");

    >select * from user;

    我们来到从库看看:

    从库:

    可见主从复制成功。

    如果此时关闭主库服务器,在从库上使用show slave statusG,将提示:

    Last_IO_Error: error reconnecting to master 'slave@192.168.147.200:3306' - retry-time: 60  retries: 86400  message: Can't connect to MySQL server on '192.168.147.200' (111)

    参考:

    https://baike.baidu.com/item/mariaDB/6466119?fr=aladdin

    https://blog.csdn.net/qq_41772936/article/details/80380950

  • 相关阅读:
    相对定位和绝对定位
    一切重新开始
    Oracle Profile 使用
    使用javamail发送邮件错误:550 5.7.1 Unable to relay
    gvim 备份文件去除 配置
    解决Maven中OutOfMemory错误
    sqlplus启动后的环境SQLPATH的设置
    ORA-30004 错误处理
    oracle 锁表查询及解决、表字段查询
    如何进行软件架构设计
  • 原文地址:https://www.cnblogs.com/stm32stm32/p/11246912.html
Copyright © 2011-2022 走看看