从已运行的mysql主服务器中复制一个从节点

环境:

192.168.205.17: as master server
192.168.205.27: as slave server

版本:

OS: centos 7 1810 with mini install
mariadb-5.5.60

目地:

当数据库运行了一段时间后,如何再做主从复制。

步骤:

1. 配置主服务器
2. 备份主服务器
3. 配置主恢复从服务器
4. 测试  

 主服务器192.168.205.17

  1. 首先安装MariaDB

    [[email protected] ~]#yum install mariadb-server
  2. 分创建数据目录和logs目录
    [[email protected] ~]#mkdir /data/{mysql,logs}
    [[email protected] ~]#chown -R mysql:mysql /data/{mysql,logs}  
  3. 修改配置文件
    [[email protected] ~]#vi /etc/my.cnf
    [mysqld]
    server_id=17  #服务器ID必须唯一
    datadir=/data/mysql  #数据文件路径
    log_bin=/data/logs/bin  #日志文件路径
    [[email protected] ~]#systemctl restart mariadb  
  4. 建立复制帐号,此帐号是从服务器与主服务器同步时连接用的帐号,因为对所有数据库同步,所以是.
    MariaDB [(none)]> GRANT replication slave on *.* to [email protected]‘192.168.205.%‘ identified by ‘centos‘;  
  5. 备份数据库,因为你的数据库运行了一段时间,为了把以前的数据也要同步过去,所以先备份主的服务器数据,再恢复到从的节点上,其中--master-data=1表示是从从节点上恢复数据,在备份的sql中会启用change master to语句
    [[email protected] ~]#mysqldump -A --single-transaction --master-data=1 -F >/data/all.mysql  
  6. 将备份的文件复制到slave服务器上
    [[email protected] ~]#scp /data/all.mysql 192.168.205.27:/data/  

    从服务器192.168.205.27

  7. 安装MariaDB在slave服务器上
    [[email protected] ~]#yum install mariadb-server
  8. 修改配置文件
    [[email protected] ~]#vi /etc/my.cnf
    [mysqld]
    datadir=/data/mysql
    read-only  #只给slave数据只读权限,当然只能限制普通帐号
    log-bin=/data/logs/bin
    server-id=27  #修改server-id一样和主不一样才行
  9. 创建数据和日志文件夹并更改所有者和所有组为mysql
    [[email protected] ~]#mkdir /data/{mysql,logs}
    [[email protected] ~]#chown mysql:mysql /data/{mysql,logs}   
  10. 在slave服务器中打开备份的文件,添加如下的内容
    [[email protected] data]#vi all.mysql
    CHANGE MASTER TO
    MASTER_HOST=‘192.168.205.17‘,
    MASTER_USER=‘repluser‘,
    MASTER_PASSWORD=‘centos‘,
    MASTER_LOG_FILE=‘bin.000005‘,
    MASTER_LOG_POS=245; 
  11. 启动服务
    [[email protected] ~]#systemctl restart mariadb  
  12. 直接恢恢复数据库
    [[email protected] ~]#mysql < /data/all.mysql
  13. 连接mariaDB并查看状态
    [[email protected] ~]#mysql
    MariaDB [(none)]> show variables like ‘server_id‘;
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | server_id     | 27    |
    +---------------+-------+
    1 row in set (0.00 sec)
    MariaDB [(none)]> show variables like ‘read_only‘;
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | read_only     | ON    |
    +---------------+-------+
    1 row in set (0.00 sec)
    MariaDB [(none)]> show slave status\G
    ...
             Slave_IO_Running: No
            Slave_SQL_Running: No
    ...
  14. 起动slave I/O thread 和slave SQL thread线程, 并查看状态
    MariaDB [(none)]> start slave;
    Query OK, 0 rows affected (0.00 sec)
    MariaDB [(none)]> show slave status\G
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.205.17
                  Master_User: repluser
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: bin.000005
          Read_Master_Log_Pos: 402
               Relay_Log_File: mariadb-relay-bin.000003
                Relay_Log_Pos: 523
        Relay_Master_Log_File: bin.000005
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
  15. 查看数据库是否同步过来
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | hellodb            |
    | mysql              |
    | performance_schema |
    | test               |
    | zhaoli             |
    +--------------------+
    6 rows in set (0.00 sec)
  16. 查看网络连接,已经连接到主服务器的3306
    [[email protected] data]#ss -nt
    State      Recv-Q Send-Q               Local Address:Port                              Peer Address:Port
    ESTAB      0      96                  192.168.205.27:22                               192.168.205.1:17526
    ESTAB      0      0                   192.168.205.27:56360                           192.168.205.17:3306 

    测试

  17. 在主的服务器上,建立一个数据库,并测试数据库同步
    MariaDB [(none)]> create database db1;
    Query OK, 1 row affected (0.00 sec)
  18. 在从服务器上看有没有数据库db1
    
    MariaDB [(none)]> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db1                |
    | hellodb            |
    | mysql              |
    | performance_schema |
    | test               |
    | zhaoli             |
    +--------------------+
    7 rows in set (0.00 sec)

原文地址:https://blog.51cto.com/127601/2426639

时间: 2024-10-08 12:29:47

从已运行的mysql主服务器中复制一个从节点的相关文章

linux服务器中了一个liun2.3的木马

昨天公司一台服务器突然之间不能ping,ssh无法登陆,从IDC反馈说服务器往外发包,数量巨大,CPU状态显示200%.通过ps aux查看以下进程文件是异常文件: ./liun2.3 /tmp/liun2.3 /tmp/liun2.3h zzta.pl 刚开始以为kill掉这些进程和删掉执行文件就可以了,可是过了几分钟,这个程序又继续执行. 那好吧,就去crontab -l 看有没有定时任务,没有. more /etc/crontab 查看有没在这里定义定时任务.也没有 想了下,既然要执行文件

在主方法中定义一个大小为50的一维整型数组,数组i名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行

package hanqi; import java.util.Scanner; public class Test7 { public static void main(String[] args) { //在主方法中定义一个大小为50的一维整型数组,数组i名为x,数组中存放着{1,3,5,…,99}输出这个数组中的所有元素,每输出十个换一行 int [] x=new int[50]; int a =1; for(int i=0;i<50;i++) { x[i]=a; a+=2; } for(

在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

//在主方法中定义一个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’:输出这个数组中的所有元素. char [][]y=new char [10][10]; for(int i=0;i<10;i++) { for(int j=0;j<10;j++) { if(i==j||i+j==9) { y[i][j]='*'; } else { y[i][j]='#'; } } } for(int i =0;i<10;i++) { for(int k

使用Navicat for Mysql连接服务器中的mysql服务

第一步:登录mysql服务器,新建一个用户. 在mysql安装中,默认的有root用户,但是root用户的默认连接Host也是localhost或127.0.0.1,也就是限制了root用户作为本地连接使用. 登录mysql服务  进入到mysql安装目录bin目录下 查看数据库  show databases;           选中数据库  use mysql; 查看当前数据库账户信息  select user,host from user; 查看到的用户只能通过本地连接,需要做外部连接,

系统用户在Samba服务器中起一个别名

(1)通过/etc/samba/smbusers文件设置用户映射关系 如实列: # cat /etc/samba/smbusers # Unix_name = SMB_name1 SMB_name2 ... root = administrator admin nobody = guest pcguest smbguest chenl = yj 在samba配置文件中加入下面参数: [global] username map = /etc/samba/smbusers

按要求编写Java应用程序。 编写一个名为Test的主类,类中只有一个主方法; 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一 个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

package com.homework.zw; public class work3 { public static void main(String[] args) {//定义数组x和y的类型 int[] x=new int[50]; char[][] y=new char[10][10]; int j =1; int n =0; //定义数组x的每一个元素 for(int i=0;i<50;i++) { x[i]=j; j=j+2; } System.out.println("一维数

编写一个名为Test的主类,类中只有一个主方法; 在主方法中定义一个大小为50的一维整型数组,数组名为x,数组中存放着{1, 3,5,…,99}输出这个数组中的所有元素,每输出十个换一行;在主方法中定义一 个大小为10*10的二维字符型数组,数组名为y,正反对角线上存的是‘*’,其余 位置存的是‘#’;输出这个数组中的所有元素。

package liu0915; import java.util.Random; public class Test0915sz { public static void main(String[] args) { int[] x=new int[50]; int j=1; for(int i=0;i<50;i++) { x[i]=j; j=j+2; } System.out.println("一维数组是:"); int n=0; for (int a=1;a<=5;a+

mysql的两种复制模式

mysql的复制术语 扩展的方式: Scale up Scale Out 复制: 向外扩展 二进制日志 单向 复制功用: 数据分布 负载均衡:读操作,适用于读密集型的应用 备份 高可用和故障切换 MySQL升级测试 主从复制: 从服务器: I/O线程:从master请求二进制日志信息,并保存至中继日志: SQL线程:从relay log中读取日志信息,在本地完成重放: 异步模式:async 1.从服务器落后于主服务器: 2.主从数据不一致: 二进制日志的格式:SET datetime = now

2-18,19 搭建MySQL主从服务器并并通过mysql-proxy实现读写分离

MySQL主从服务器 实现方式: MySQL  REPLICATION Replication可以实现将数据从一台数据库服务器(master)复制到一台或多台数据库服务器(slave) 默认情况下这种情况属于异步复制,无需维持长连接 通过配置,可以复制所有库或者几个库,甚至库中的一些表 它是MySQL内建的,自带 Replication的原理 主服务器master将数据库的改变写入二进制日志文件,从服务器slave同步这些二进制日志,并生成中继日志,从服务器根据中继日志,执行这些改变 DML:S