我的github

安装MySQL服务器

  • 安装数据库
yum install -y mariadb-server
  • 初始化数据库
mysql_secure_installation	#MySql初始化脚本,以下为每一项的翻译
是否设置root密码
输入密码
确认密码
是否设置匿名用户
是否允许root远程登录
删除test数据库
现在是否生效
添加PATH变量
  • 启动数据库
systemctl start mariadb

主服务器基础搭建

  • 设定主机名,在当前bash生效
hostnamectl set-hostname mysql-master
exec bash
  • 创建数据库
MariaDB [(none)]> create database shuaiguoxia ;
Query OK, 1 row affected (0.00 sec) MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| shuaiguoxia |
| test |
+--------------------+
5 rows in set (0.00 sec)
  • 创建表
use shuaiguoxia;
create table blog (name varchar(20),age int,sex varchar(10));
  • 查看表结构
MariaDB [shuaiguoxia]> desc blog;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(20) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| sex | varchar(10) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
  • 插入测试数据
insert into blog (name,age,sex) values ("guo",27,"nan");
insert into blog (name,age,sex) values ("wu",33,"nan");
insert into blog (name,age,sex) values ("cai",31,"nv");
insert into blog (name,age,sex) values ("li",19,"nan");
insert into blog (name,age,sex) values ("zhao",18,"nan");
insert into blog (name,age,sex) values ("qian",25,"nv");

设定主服务器

  • 修改配置文件
vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=10
log-bin=mysql-bin
relay-log=mysql-relay-bin
replicate-wild-ignore-table=mysq.%
  • 给blog表上锁
mysql -u root -p

use shuaiguoxia;

MariaDB [shuaiguoxia]> lock tables blog read;
Query OK, 0 rows affected (0.00 sec)
  • 导出主库中已经有的数据
mysqldump -u root -p -h 127.0.0.1 --database shuaiguoxia  > /bak.sql
Enter password:
# 导出时一定要--dabatase指定数据库
  • 将数据复制到从节点
scp /bak.sql 192.168.1.175:/
  • 从节点导入从主节点复制的数据
mysql -u root -p < /bak.sql
  • 给从节点创建授权用户
grant replication slave on *.* to 'slave_user'@'192.168.1.%' identified  by '1234'

从节点配置

  • 设定主机名,在当前bash生效
hostnamectl set-hostname slave-master
exec bash
  • 设定配置文件
[root@mysql-slave ~]# cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
server-id=21
log-bin=mysql-bin
replicate-wild-ignore-table=mysql.%
  • 查看主节点的master状态
# 查看主节点的master状态,要在主节点执行
MariaDB [(none)]> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 2900 | | |
+------------------+----------+--------------+------------------+
  • 从节点导入从主节点复制的数据
# 前面导入过就不同导入了,怕你忘了再提一句
mysql -u root -p < /bak.sql
  • 设定自动复制
# 命令中的master_log_file和master_log_pos为主节点查询的结果

MariaDB [(none)]> change master to \
master_host='192.168.1.46',
master_user='slave_user',
master_password='1234',
master_log_file='mysql-bin.000003',
master_log_pos=2900;
  • 启动复制
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.01 sec)
  • 查看复制状态
# 正常状态下Slave_IO_Running和 Slave_SQL_Running都为yes

MariaDB [(none)]> show slave status\G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.1.46
Master_User: slave_user
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000003
Read_Master_Log_Pos: 3057
Relay_Log_File: mariadb-relay-bin.000002
Relay_Log_Pos: 686
Relay_Master_Log_File: mysql-bin.000003
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: mysql.%
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 3057
Relay_Log_Space: 982
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: 10
1 row in set (0.00 sec)

主从失败常见原因

  • 网络不通:排查网络、端口
  • 用户密码不对:检查在主节点创建的用户名密码
  • 用户权限不对:MySQL中对一个用户的标识为IP@username,
  • pos不对:检查从节点设定的开始pos是否为主节点正在进行的pos
  • 开始二进制文件不对:检查从节点开始的二进制文件是否为主节点整个在进行的二进制位内按
  • 防火墙限制:关闭防火墙

从节点导入数据不生效

  • 主节点导出数据时要添加--databases参数
mysqldump -u root -p -h 127.0.0.1 --database shuaiguoxia  > /bak.sql
Enter password:
# 导出时一定要--dabatase指定数据库
  • 从节点导入数据库是要使用mysql命令
mysql -u root -p < /bak.sql

MariaDB主从复制搭建的更多相关文章

  1. MariaDB主从复制的逻辑与实现

    一.关系型数据库的劣势 “关系型数据库:指采用了关系模型来组织数据的数据库,而关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织.”——Wiki 关系型数据 ...

  2. Linux-基础学习(五)-mariadb主从复制以及redis学习

    开始今日份整理 1.mariadb的主从复制 主从复制大致图示: 1.1 mysql基本命令复习 linux下的操作 .启动mysql systemctl start mariadb .linux客户 ...

  3. MariaDB主从复制,redis发布订阅,持久化,以及主从同步

      一. MariaDB主从复制 mysql基本操作 1 连接数据库 mysql -u root -p -h 127.0.0.1 mysql -u root -p -h 192.168.12.60 2 ...

  4. MYSQL主从复制搭建及切换操作(GTID与传统)

    结构如下: MYSQL主从复制方式有默认的复制方式异步复制,5.5版本之后半同步复制,5.6版本之后新增GTID复制,包括5.7版本的多源复制. MYSQL版本:5.7.20 操作系统版本:linux ...

  5. 【MySQL】Mariadb主从复制

    Mariadb主从复制 环境配置: Master : 172.30.200.200 Slave : 172.30.200.204 架构图,如下: Master的配置: 1.binlog配置 [root ...

  6. mysql 5.7 主从复制搭建及原理

    1. 主从复制搭建 1.1 环境准备 OS: Ubuntu 18.04 master: 192.168.0.3 slave: 192.168.0.6 1.2 安装依赖包 # Ubuntu apt-ge ...

  7. MySQLDocker 主从复制搭建

    MySQLDocker 主从复制搭建 MySQLDocker 的搭建 docker search mysql docker pull mysql/mysql-server:8.0.26 docker ...

  8. MariaDB——(三) MariaDB 10.0.15 standard replication主从复制搭建

    最近看了一下MariaDB的常规复制章节,就按部就班的搭建了一下最简单的主从复制.需要的硬件环境很简单(在虚拟机VMware中搭建): 1:两台server:Master: 192.168.6.133 ...

  9. mysql8.0.主从复制搭建

    搭建主从数据库 一.准备两台以上对的数据库 数据库1(主服务器):192.168.2.2 数据库2(从服务器):192.168.2.4           1.1      配置主服务器 .在 /et ...

随机推荐

  1. LeetCode - Duplicate Emails

    Description:Write a SQL query to find all duplicate emails in a table named Person. 找出表中重复的Email. # ...

  2. ELK基础学习

    第壹部分:Elasticsearch 一 .Elasticsearch增删改查1.数据写入:HTTP method:POSTURL:http://127.0.0.1:9200/index-docs-n ...

  3. mysql如何查询日期的列表?

    转自:http://blog.csdn.net/liufei198613/article/details/72643345 select @num:=@num+1,date_format(adddat ...

  4. log4j 设置将生成的日志进行gz压缩并删除过期日志

    1.准备jar  :log4j-1.2.17.jar,commons-logging-1.2.jar,这2个就可以了,其他关于日志的jar包就不要加进来了,在优先级上会有冲突. 2.定义一个类,继承R ...

  5. MP3 ID3信息编辑器(附源码)

    练习WPF时写的编辑MP3 ID3信息的小工具,方便对歌曲的统一管理,同时增加了调用豆瓣音乐API获取专辑信息的功能:1.主界面: 2.没有ID3 信息的MP3歌曲: 3.点击自动获取,从豆瓣音乐获取 ...

  6. linux: convmv =-======pkgs.org

    convmv 不同系统文件名转化 windows: gbk linux: utf8 wget--url coding. vim ---encoding,termcode, fileencoding, ...

  7. 完全用nosql轻松打造千万级数据量的微博系统(转)

    原文:http://www.cnblogs.com/imxiu/p/3505213.html 其实微博是一个结构相对简单,但数据量却是很庞大的一种产品.标题所说的是千万级数据量 也并不是一千万条微博信 ...

  8. 【Python】【爬虫】如何学习Python爬虫?

    如何学习Python爬虫[入门篇]? 路人甲 1 年前 想写这么一篇文章,但是知乎社区爬虫大神很多,光是整理他们的答案就够我这篇文章的内容了.对于我个人来说我更喜欢那种非常实用的教程,这种教程对于想直 ...

  9. 怎么应对 domino文档损坏然后损坏文档别删除导致数据丢失

    对于domino 有个机制是同步 ..然后如果文档被损坏之后会通过同步或者压缩 之类的 然后将损坏文档删除 那么这样就有个风险..知识管理文档会被删除. 并且删除了之后管理员如果不仔细看日志的话也不会 ...

  10. EasyUI Pagination 分页

    通过 $.fn.pagination.defaults 重写默认的 defaults. 分页(pagination)允许用户通过翻页导航数据.它支持页面导航和页面长度选择的可配置选项.用户可以在分页的 ...