zoukankan      html  css  js  c++  java
  • Linux-07 mysql+centos7+主从复制

    MYSQL(mariadb)

    MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。
    开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
    MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
    

     引言

    第一种方式是,通过阿里云的yum源去下载(第三方的yum源,可能会版本较低,且软件不全,可能找不到)
    CentOS-Base.repo    epel.repo   
    
    	yum install mariadb-server   #yum安装mariadb    因为这个阿里云特别快,咱们用他去学习,加速下载  300kb/s 
    	
    	mariadb-server                     x86_64                     1:5.5.60-1.el7_5                       base                      11 M
    	为依赖而安装:
    	mariadb                            x86_64                     1:5.5.60-1.el7_5                       base                     8.9 M
    	perl-DBD-MySQL                     x86_64                     4.023-6.el7                            base                     140 k
    	为依赖而更新:
    	mariadb-libs                       x86_64                     1:5.5.60-1.el7_5                       base                     758 k
    
    
    
    
    第二种方式是,通过mariadb官方的yum源去下载(一定是这个软件最正确的yum源,且包都是最新的)
    	1.下载一个第三方的软件,顺序就是去官网找到这个软件的下载方式
    
    
    	
    	yum install MariaDB-server MariaDB-client  #区分大小写  ,这个方式是取国外下载mariadb,速度太慢  30kb/s  
    
    依赖关系解决
    
    =====================================================================================================================================
     Package                              架构                  版本                                        源                      大小
    =====================================================================================================================================
    正在安装:
     MariaDB-client                       x86_64                10.1.37-1.el7.centos                        mariadb                 40 M
     MariaDB-server                       x86_64                10.1.37-1.el7.centos                        mariadb                104 M
     MariaDB-shared                       x86_64                10.1.37-1.el7.centos                        mariadb                1.3 M
          替换  mariadb-libs.x86_64 1:5.5.56-2.el7
    为依赖而安装:
     MariaDB-common                       x86_64                10.1.37-1.el7.centos                        mariadb                123 k
     boost-program-options                x86_64                1.53.0-27.el7                               base                   156 k
     galera                               x86_64                25.3.24-1.rhel7.el7.centos                  mariadb                8.1 M
    	
    

    1.下载mariadb,通过阿里云的源

    yum install mariadb-server
    

    2.通过yum安装的软件,systemctl start/stop/restart/status  mariadb   

    systemctl start mariadb #启动mariadb数据库
    

    3.初始化mariadb

    mysql_secure_installation    #直接输入这个命令,设置root密码,删除匿名用户等等操作
    

    4.配置myariadb远程登录,可以通过windows,pycharm等客户端进行连接,在远端登录的话,就必须得输入redhat这个密码

    grant all privileges on *.* to root@'%' identified by '数据库密码';
    
    授予 所有的 权限  在  所有的库.所有的表   用户名@"所有的地址"     identified by   "密码";
    

    5.刷新授权表,使得权限立即生效

    flush privileges;
    

    6.更改mysql的密码

    set password = PASSWORD('redhat123');
    

    7.创建普通用户wind

    create user wind@'%' identified by 'wind666';
    

    8.查询用户信息

    select host,user,password  from user;
    

    9.授权语句

    grant 权限 on 数据库.表名 to 账户@主机名            对特定数据库中的特定表授权
    grant 权限 on 数据库.* to 账户@主机名              对特定数据库中的所有表给与授权
    grant 权限1,权限2,权限3 on *.* to 账户@主机名      对所有库中的所有表给与多个授权
    grant all privileges on *.* to 账户@主机名      对所有库和所有表授权所有权限
    grant create,select,insert on *.* to root@'%' identified by "密码"
    

    10.数据库的中文设置

    1.查看数据库编码
    s 
    2.修改mysql的配置文件 /etc/my.cnf ,加入以下信息
    
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    log-error=/var/log/mysqld.log
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    
    3.修改了配置文件,重启服务
    systemctl restart mariadb 
    
    4.查看数据库创建的编码,只有在更新了数据库编码之后,创建的数据库,才会使用这个编码
    show create database s16;
    
    5.可以测试创建table,写入中文数据
    

    11.mysql的数据备份

    1.通过命令导出全部数据
    mysqldump -u root -p --all-databases > /data/db.dump
    
    2.可以测试删除一些无关紧要的db,例如s14,test这样的数据
    
    
    3.导入数据库的db文件,在mysql命令行中输入这个命令
    mysql >    source /opt/db.dump   #这一步是输入的sql语句,在mysql中输入,导入数据
    
    4.第二种方式导入数据,通过mysql命令
    mysql -uroot -p <  /opt/db.dump  
    

    mysql主从复制的步骤:

    环境准备:
    准备两台服务器,安装两个mariadb
    
    主库是:192.168.12.96 mater
    从库是:192.168.12.87 slave  

    1.主库的操作如下:

    1.开启binlog功能,修改/etc/my.cnf 
    vim /etc/my.cnf #写入
    
    [mysqld]
    server-id=1   #指明主库的身份id为1
    log-bin=mysqls14-bin   #指明binlog的日志名
    
    2.修改了配置文件,重启mariadb,使得binlog生效
    systemctl restart mariadb  
    
    3.登录mysql,检查主库的状态
    show master status; 
    
    4.创建一个用户,用于进行主从同步
    create user 'xushuo'@'%' identified by 'xushuo666';
    
    5.授予账号权限,授予一个从库的身份权限
    grant replication slave on *.* to 'xushuo'@'%';
    
    6.锁定mysql的表,防止数据写入
    flush table with read lock;
    
    7.主从同步,将从库与主库的数据,保持一致后,它俩都在同一个起跑线,然后解除锁表,一同写入数据,保证数据一致性
    	1.导出当前的数据,用于slave机器导入数据,保证在一个起始点
    	mysqldump -u root -p --all-databases > /data/db.dump
    	2.将此db.dump文件远程传输给 slave机器,用于导入
    	scp /data/db.dump  root@192.168.12.87:/tmp/
    	3.登录slave从库,导入主库的数据信息
    	mysql >  source /tmp/db.dump 
    	4.查看主库和从库的信息,是否一致
    
    
    8.查看主库的状态信息,binlog信息
    show master status; 
    
    9.解锁表,开始主从同步
    unlock tables;
    

    2.从库的设置:

    1.在/etc/my.cnf当中打开server-id 
    vim /etc/my.cnf 
    
    2.重启myariadb
    
    3.查看slave机器的身份信息
    show variables like 'server_id';
    show variables like 'log_bin';
    
    4.通过命令,开启主从同步技术
    change master to master_host='192.168.12.96', (自己linux Ip )
    master_user='xushuo',(根据自己的填)
    master_password='xushuo666',(根据自己的填)
    master_log_file='mysqlwind-bin.000001', (根据自己的填)
    master_log_pos=671;  (根据自己的填)
    
    5.开启slave 
    start slave;
    
    6.检查slave状态,检查两条参数,如果都是yes,即主从ok
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
    
    			
    7.此时可以在主库中写入数据,查看从库中是否生成了记录
    
    主库:插入数据
    
    从库:检查数据
    

    Mariadb 的sql:

    增
    create database s14;
    create table s14tb(id int,name char);
    insert into s14tb (id ,name) values(1,"s14")
    
    
    删
    drop database s14;
    drop table s14tb; #删除整张表
    delete from s14tb;
    
    
    改
    update
    
    
    查
    
    select id,name,addr from table;
    

      

     

    幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。
  • 相关阅读:
    《Java4Android视频教程》学习笔记(二)
    漫画
    MyEclipse启动时报 Unable to acquire application service. Ensure that the org.eclips
    linux下关闭桌面模式使用命令行模式及其它模式
    nginx 开启fastcgi 可支持php、python、perl等多种语言
    linux下安装ImageMagick和Imagick扩展
    nginx 平滑升级到Tengine并编译concat
    centos 安装详解
    for xml path group by
    泛型对象Lists转xml
  • 原文地址:https://www.cnblogs.com/TodayWind/p/13715734.html
Copyright © 2011-2022 走看看