zoukankan      html  css  js  c++  java
  • MySQL多种实验

    MySQL多种实验

      MySQL主从复制(两台CentOS7干净的新机器)

        *准备两台新机器(我这里演示IP为192.1681.198.6主与192.168.198.72从)

         *主服务器操作:先安装数据库yum install mariadb-server -y

                 创建二进制日志存放目录:mkdir /data/logbin

                改变所有者和所属组:chown mysql.mysql /data/logbin            

                修改配置文件:vim /etc/my.cnf中的[mysqld]添加server-id=1,log_bin=/data/logbin/mysql-bin

                重启数据库服务:systemctl restart mariadb

         *从服务器操作:先安装数据库yum install mariadb-server -y

                修改配置文件:vim /etc/my.cnf中的[mysqld]添加server-id=2,read-only

                重启数据库服务:systemctl restart mariadb 

         *主服务器操作:创建用户参与复制grant replication slave on *.* to repluser@'192.168.198.%' identified by  'centos';[用户为repluser,口令centos]

                查询日志位置:show master logs;[记住此位置]

         *从服务器操作:使用CHANGER MASTER TO 命令时指明ssl相关选项,在mysql中输入CHANGE MASTER TO

                 MASTER_HOST='192.168.198.6',主节点IP
                 MASTER_USER='repluser',用户
                 MASTER_PASSWORD='centos',口令
                 MASTER_PORT=3306,端口
                 MASTER_LOG_FILE='mysql-bin.000003',日志文件
                 MASTER_LOG_POS=402;日志文件复制位置

                ll /var/lib/mysql查看会发现生成好几个文件,例如:master.info存放主节点用户信息;relay-log.info存放日志复制位置

                在mysql中输入:show slave statusG;发现关系已经生成,但线程还未启用

                启动线程:start slave;线程启动,也可以用show processlist查看线程;

         *测设操作,在主服务器上创建一个数据库:create database db1;

              再去从服务器上看show database;会发现已经同步;[也可用其他语句测试,根据自身爱好]

    ----------------------------------------------------------------------------------------------------------------------------------------------------------

      MySQL主从复制(两台CentOS7在已有mysql数据库基础上的机器)

        *准备两台新机器(我这里演示IP为192.1681.198.6主与192.168.198.72从)

         *主服务器操作:修改配置文件vim /etc/my.cnf中的[mysqld]添加server-id=1,log_bin=/data/logbin/mysql-bin

                重启数据库服务:systemctl restart mariadb

                创建用户参与复制grant replication slave on *.* to repluser@'192.168.198.%' identified by  'centos';        

                 备份数据库mysqldump -A --single-transaction --master-data=1 -F > /data/logbin/all.sql[进入查看日志位置]

                复制给从服务器:scp /data/logbin/all.sql  192.168.198.72:/data/logbin

         *从服务器操作:修改传送过来的文件,如下图所示

                  

                修改配置文件:vim /etc/my.cnf中的[mysqld]添加server-id=2,read-only

                启动数据库服务:systemctl start mariadb

                在mysql中引入文件:source /data/logbin/all.sql

                查看:show slave statusG;已经成功[但未启动线程]

                启动线程:start slave;启动成功;也可以用命令:ss -nt查看

         *测设操作,在主服务器上创建一个数据库:create database db1;

              再去从服务器上看show database;会发现已经同步;[也可用其他语句测试,根据自身爱好]

    ----------------------------------------------------------------------------------------------------------------------------------------------------------

      主服务器down,提升一个从服务器成为新的主服务器(一主二从的CentOS7系统)

         *一从服务器操作(升主):先停止服务stop slave

                  删除所有二进制重新计数:reset slave|彻底清楚使用reset slave all(使用all方法)

                 修改配置文件vim /etc/my.cnf中的[mysqld],下图从服务器配置修改为主服务器配置

                 

                  

                 重新启动数据库服务:systemctl restart mariadb

                 进入mysql查看二进制日志文件位置:show master logs;

        *二从服务器操作:先停止服务stop slave

                  删除所有二进制重新计数:reset slave|彻底清楚使用reset slave all(使用all方法)

                 在mysql终端输入:CHANGE MASTER TO
                           MASTER_HOST='192.168.198.72',
                           MASTER_USER='repluser',
                            MASTER_PASSWORD='centos',
                            MASTER_PORT=3306,
                            MASTER_LOG_FILE='mysql-bin.000001',
                           MASTER_LOG_POS=245;

                 启动服务:start slave;

                 查看:show slave statusG;已经成功

         *测设操作,在主服务器上创建一个数据库:create database db1;

               再去从服务器上看show database;会发现已经同步;[也可用其他语句测试,根据自身爱好]

    ----------------------------------------------------------------------------------------------------------------------------------------------------------

      级联复制(三台新主机,作者操作CentOS7系统)

       *准备三台新机器(我这里演示IP为192.1681.198.6master服务器配置与192.168.198.72级联从服务器,192.168.198.73从服务器)

        *maset服务器操作:先安装数据库yum install mariadb-server -y

                 创建二进制日志存放目录:mkdir /data/logbin

                改变所有者和所属组:chown mysql.mysql /data/logbin            

                修改配置文件:vim /etc/my.cnf中的[mysqld]添加server-id=1,log_bin=/data/logbin/mysql-bin

                启动数据库服务:systemctl start mariadb

                创建用户参与复制grant replication slave on *.* to repluser@'192.168.198.%' identified by  'centos';[用户为repluser,口令centos]

                 备份数据库mysqldump -A --single-transaction --master-data=1 -F > /data/logbin/all.sql[进入查看日志位置]

        *级联从服务器操作:先安装数据库yum install mariadb-server -y

               创建文件接收目录:mkdir /data/logbin/

               改变所有者和所属组:chown mysql.mysql /data/logbin

        *master服务配置操作:复制给从服务器:scp /data/logbin/all.sql  192.168.198.72:/data/logbin

        *级联从服务器操作:修改配置文件vim /etc/my.cnf中的[mysqld]添加server-id=2,read-only,log-bin,log_slave_updates

                 修改传送文件:vim /data/logbin/all.sql,添加CHANGE MASTER TO
                                      MASTER_HOST='192.168.198.6',
                                      MASTER_USER='repluser',
                                      MASTER_PASSWORD='centos',
                                      MASTER_PORT=3306,
                                      MASTER_LOG_FILE='mysql-bin.000001',
                                      MASTER_LOG_POS=245;

                 启动数据库服务:systemctl start mariadb;

                 把all.sql传入到mysql中:mysql < /data/logbin/all.sql

                 启动线程服务:mysql > start slave;

                 备份数据库到二从服务器上:mysqldump -A --single-transaction --master-data=1 -F > /data/logbin/all2.sql

        *二从服务器操作:先安装数据库yum install mariadb-server -y

               创建文件接收目录:mkdir /data/logbin/

               改变所有者和所属组:chown mysql.mysql /data/logbin

        *级联从服务配置操作:复制给从服务器:scp /data/logbin/all2.sql  192.168.198.73:/data/logbin

        *二从服务器操作:修改配置文件vim /etc/my.cnf中的[mysqld]添加server-id=2,read-only

                 修改传送文件:vim /data/logbin/all.sql,添加CHANGE MASTER TO
                                      MASTER_HOST='192.168.198.72',
                                      MASTER_USER='repluser',
                                      MASTER_PASSWORD='centos',
                                      MASTER_PORT=3306,
                                      MASTER_LOG_FILE='mysql-bin.000001',
                                      MASTER_LOG_POS=245;

                 启动数据库服务:systemctl start mariadb;

                 把all.sql传入到mysql中:mysql < /data/logbin/all.sql

                 启动线程服务:mysql > start slave;

                 查看:show slave statusG;已经成功[操作没成功报超时错误在级联上刷新flush privileges;]

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

      MySQL主主复制(两台新机器CentOS系统)

             *准备两台新机器(我这里演示为IP为192.168.198.6与192.168.198.72)

             *一主操作:先安装数据库yum install mariadb-server -y

              修改配置文件:vim /etc/my.cnf在[mysqld]中添加server-id=1,log-bin,auto_increment_offset=1,auto_increment_increment=2

              启动数据库服务:systemctl start mariadb

             进入mysql终端查看:show master logs;

             创建用户grant replication slave on *.* to repluser@'192.168.198.%' identified by  'centos';

         *二主操作:先安装数据库yum install mariadb-server -y

             修改配置文件:vim /etc/my.cnf在[mysqld]中添加server-id=2,log-bin,auto_increment_offset=2,auto_increment_increment=2

                启动数据库服务:systemctl start mariadb

        *一主操作:备份数据库mysqldump -A --single-transaction --master-data=1 -F > /data/all.sql[进入查看日志位置]

             复制给从服务器:scp /data/all.sql  192.168.198.72:/data/

        *二主操作:修改传送文件vim /data/logbin/all.sql,添加CHANGE MASTER TO
                                      MASTER_HOST='192.168.198.6',
                                      MASTER_USER='repluser',
                                      MASTER_PASSWORD='centos',
                                      MASTER_PORT=3306,
                                      MASTER_LOG_FILE='mysql-bin.000002',
                                      MASTER_LOG_POS=245;

             把all.sql传入到mysql中:mysql < /data/logbin/all.sql

             启动线程服务:mysql > start slave;

             查看:show slave statusG;已经成功[单向复制成功]

             查看日志位置:show master logs;

        *测设操作,在一主服务器上创建一个数据库:create database db1;

              再去从服务器上看show database;会发现已经同步;[也可用其他语句测试,根据自身爱好]

        *一主操作:在mysql终端输入:CHANGE MASTER TO
                     MASTER_HOST='192.168.198.72',二主IP
                      MASTER_USER='repluser',
                     MASTER_PASSWORD='centos',
                      MASTER_PORT=3306,
                     MASTER_LOG_FILE='mariadb-bin.000001', MASTER_LOG_POS=514995;二主二进制日志位置

             启动线程服务:mysql > start slave;

             查看:show slave statusG;已经成功[双向复制成功]

        *测设操作,在一主服务器上创建一个数据库:create database db1;

              再去从服务器上看show database;会发现已经同步;[也可用其他语句测试,根据自身爱好]

    -------------------------------------------------------------------------------------------------------------------------------------------------------------

      半同步复制(三台CentOS7新机器)

        *准备三台新机器(我这里演示IP为192.1681.198.6主与192.168.198.72从服务器,192.168.198.73从服务器)

        *主服务器操作:先安装数据库yum install mariadb-server -y

                 创建二进制日志存放目录:mkdir /data/logbin

               改变所有者和所属组:chown mysql.mysql /data/logbin 

               修改配置文件vim /etc/my.cnf中的[mysqld]添加server-id=1,log_bin=/data/logbin/mysql-bin

                重启数据库服务:systemctl restart mariadb

                建用户参与复制grant replication slave on *.* to repluser@'192.168.198.%' identified by  'centos';        

                 //备份数据库mysqldump -A --single-transaction --master-data=1 -F > /data/logbin/all.sql[进入查看日志位置]

                //复制给从服务器:scp /data/logbin/all.sql  192.168.198.72:/data/logbin

        *一从服务器操作:先安装数据库yum install mariadb-server -y

                修改配置文件vim /etc/my.cnf中的[mysqld]添加server-id=2

                重启数据库服务:systemctl restart mariadb

        *二从服务器操作:先安装数据库yum install mariadb-server -y

                修改配置文件vim /etc/my.cnf中的[mysqld]添加server-id=3

                重启数据库服务:systemctl restart mariadb     

        *主服务器操作:查看日志:show master logs;

               创建账号:grant replication slave on *.* to repluser@'192.168.198.%' identified by 'centos';

        *一从与二从相同操作:在mysql终端上输入CHANGE MASTER TO
                           MASTER_HOST='192.168.198.6',
                           MASTER_USER='repluser',
                           MASTER_PASSWORD='centos',
                           MASTER_PORT=3306,
                           MASTER_LOG_FILE='mysql-bin.000001',
                           MASTER_LOG_POS=245;  

                   启动服务:start slave;

                   查看服务是否成功:show slave statusG;

        *测设操作,在一主服务器上创建一个数据库:create database db1;

              再去从服务器上看show database;会发现已经同步;[也可用其他语句测试,根据自身爱好]

        *主服务器操作:安装插件INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

                查看是否安装成功:show plugins;

                查看插件状态:SHOW GLOBAL VARIABLES LIKE '%semi%';[默认OFF]

                启用插件:set global rpl_semi_sync_master_enabled=on;

                查看半同步全部状态:SHOW GLOBAL STATUS LIKE '%semi%';

        *一从和二从服务器操作:安装插件INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

                   查看状态:SHOW GLOBAL VARIABLES LIKE '%semi%';[默认OFF]

                   打开状态:SET GLOBAL rpl_semi_sync_slave_enabled=on;

                   查看从节点状态:SHOW GLOBAL STATUS LIKE '%semi%';[默认OFF]

                   重启线程打开状态:stop slave; start slave; SHOW GLOBAL STATUS LIKE '%semi%';查看是ON

        *主服务器操作:查看节点是否启用SHOW GLOBAL STATUS LIKE '%semi%';

                

        *测试操作:主服务器操作数据库都会同步/down或者停止服务再或者关闭线程一个从服务器,主服务器操作数据库还会成功,还有一台从服务器

             两台从服务器都不在,主服务器操作还会成功,要等待默认时长10秒,两台从服务器重新上线,主服务器操作还会同步上

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------

      利用proxySQL实现读写分离(三台新机器CentOS系统)

        *准备三台新机器(演示IP为192.168.198.6proxy与192.168.198.72master,192.168.198.73slave)

         *先搭建master与slave的主从复制[请参照第一条例子,再次不多做演示]

        *proxy操作不需安装数据库:安装yum仓库cat <<EOF | tee /etc/yum.repos.d/proxysql.repo
                          [proxysql_repo]
                          name= ProxySQL YUM repository
                          baseurl=http://repo.proxysql.com/ProxySQL/proxysql-1.4.x/centos/$releasever
                          gpgcheck=1
                          gpgkey=http://repo.proxysql.com/ProxySQL/repo_pub_key
                          EOF

                     安装proxysql:yum install proxysql

                     安装数据库客户端:yum install mariadb -y

                     查看proxysql文件:rpm -ql proxysql

                     启动proxysql服务:service proxysql start

                     查看端口:ss -ntl(proxysql启动会有6032,6033端口号)

                     备份一份proxysql配置文件:cp /etc/proxysql.cnf /etc/proxysql.cnf.bak

                     //修改配置文件改变端口号:vim /etc/proxysql

                                

                     使用mysqsl客户端连接proxysql:mysql -uadmin -padmin -P6032 -h127.0.0.1

                     查看数据库:show databases;

                           

                           main 是默认的”数据库”名,表里存放后端db实例、用户验证、路由规则等信息。 表名以 runtime_开头的表示proxysql当前运行的配置内容,不能通过dml语句修改, 只能修改对应的不以 runtime_ 开头的(在内存)里的表,然后 LOAD 使其生效, SAVE 使其存到硬盘以供下次重启加载

                           disk 是持久化到硬盘的配置,sqlite数据文件

                           stats 是proxysql运行抓取的统计信息,包括到后端各命令的执行次数、流量、processlist、查询种类汇总/执行时间,等等

                           monitor 库存储 monitor 模块收集的信息,主要是对后端db的健康/延迟检查

                     在数据库中添加72与73记录:insert into mysql_servers(hostgroup_id,hostname,port) values(10,'192.168.198.72',3306);

                                   insert into mysql_servers(hostgroup_id,hostname,port) values(10,'192.168.198.73',3306);

                     加载并保存内核生效:load mysql servers to runtime; save mysql servers to disk;

        *master操作添加账户:grant replication client on *.* to monitor@'192.168.198.%'  identified by 'xdk';

        *proxy操作设置监控账号和监控口令:set mysql-monitor_username='monitor';set mysql-monitor_password='xdk';

                         加载并保存内核生效:load mysql servers to runtime; save mysql servers to disk;

                         查看监控是否正确:select * from mysql_server_connect_log;

                         查看客户端状态:select * from mysql_server_ping_log;

                          设置分组信息,需要修改的是main库中的mysql_replication_hostgroups表,该表有3个字段: writer_hostgroup,reader_hostgroup,comment, 指定写组的id为10,读组的id为20:insert into mysql_replication_hostgroups values(10,20,"test");

                         加载并保存生效:load mysql servers to runtime; save mysql servers to disk;

                         查看分组信息: select hostgroup_id,hostname,port,status,weight from mysql_servers;

         *在master创建访问账号:grant all on *.* to sqluser@'192.168.198.%' identified by 'xdk';

        *在proxysql把sqluser添加到表中:insert into mysql_users(username,password,default_hostgroup) values('sqluser','xdk',10);[10是写组]

                        加载并保存生效:load mysql users to runtime;save mysql users to disk;

                        测试sqluser用户测试是否能成功:mysql -usqluser -pxdk -P6033 -h127.0.0.1 -e 'select @@server_id'

                        测试sqluser用户是否能创建成功:mysql -usqluser -pmagedu -P6033 -h127.0.0.1 -e 'create database testdb'[在master和从查看]

                        插入路由规则:insert into mysql_query_rules  (rule_id,active,match_digest,destination_hostgroup,apply)VALUES  (1,1,'^SELECT.*FOR UPDATE$',10,1),(2,1,'^SELECT',20,1);

                        保存并生效:load mysql query rules to runtime;save mysql query rules to disk;

                        查看读写:mysql -usqluser -pmagedu -P6033 -h127.0.0.1 -e 'select @@server_id';

                        查看:mysql -usqluser -pmagedu -P6033 -h127.0.0.1 -e 'select @@server_id'[id为73select为读]

                        查看调度策略:SELECT hostgroup hg,sum_time, count_star, digest_text FROM stats_mysql_query_digest  ORDER BY sum_time DESC;

    -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

      MHA(四台CentOS7新机器)

       *准备四台新机器(机器IP为192.168.198.6mha-manager,192.168.198.72master,192.168.198.73slave1,192.168.198.74slave2)

        *分别设置四台机器主机名:192.168.198.6hostnamectl set-hostname mha-manager;

                    192.168.198.72hostnamectl set-hostname master; 

                   192.168.198.73hostnamectl set-hostname slave1; 

                   192.168.198.74hostnamectl set-hostname slave2;

        *分别在master,slave1,slave2安装数据库:yum install mariadb -y

       *master主,slave1,slave2从复制:修改master配置vim /etc/my.cnf:server-id=72,log-bin,skip_name_resolve

                      修改slave1,slave2配置vim /etc/my.cnf:server-id=73/74,log-bin,read-only,relay_log_purge=0,skip_name_resolve

                      启动数据库服务:systemctl start mariadb;

       *master操作:创建复制账号:grant replication slave on *.* to repluser@'192.168.198.%' identified by  'centos';

             创建mha节点账号:grant all on *.* to mhauser@'192.168.198.%' identified by  'centos';

       *slave1,slave2相同操作:在mysql终端输入CHANGE MASTER TO
                            MASTER_HOST='192.168.198.72',
                            MASTER_USER='repluser',
                            MASTER_PASSWORD='centos',
                           MASTER_PORT=3306,
                            MASTER_LOG_FILE='mariadb-bin.000001',
                            MASTER_LOG_POS=245;

                   启动线程:start slave;

                   查看线程是否同步:show slave statusG;

        *mha-manager操作:链接: https://pan.baidu.com/s/1bZMBoLtXMk8IgGLhSZZSkw 提取码: fpfm 复制这段内容后打开百度网盘

                下图两个包复制到系统中

                

         *master,slave1,slave2共同操作:把上图第二个包拉到系统中

        *mha-manager操作:查看epel源是否启动yum repolist不存在

                安装epel:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

                    yum -y install epel-release

                    yum repolist

                   安装mha包:yum install mha*.rpm -y

       *master,slave1,slave2共同操作:安装mha包yum install mha*.rpm -y

       *mha-manager操作:生成公钥私钥对ssh-keygen  

                把生成的密钥传送给master,slave1,slave2:scp -r .ssh/ 192.168.198.[72,73,74]:/root/  

                测试操作:ssh 192.168.198.[72,73,74]链接即成功

                创建目录:mkdir /etc/mha

                创建文件:vim /etc/mha/app1.cnf[第一个主从]            

                                                              

                   检查操作:masterha_check_ssh --conf=/etc/mha/app1.cnf[都OK即成功]

                   检查复制是否正常:masterha_check_repl --conf=/etc/mha/app1.cnf[都OK即成功]

                     启动:masterha_manager --conf=/etc/mha/app1.cnf[会卡在界面,一次性任务]

                   关机master主服务器:masterha_manager --conf=/etc/mha/app1.cnf[任务完成,提升73从服务器为主服务器]

        *73操作:在MySQL中输入show slave statusG;[没有任何进程,从升主成功]

            测试操作:添加一个数据库[同步成功]

            show variables like 'read_only';[已经改变OFF],但配置文件未改变,把read-only注销掉

    --------------------------------------------------------------------------------------------------------------------------------------------------------------

      Galera Cluster(三台新CentOS7机器)

         *准备三台新机(演示Ip为192.168.198.6,192.168.198.72,192.168.198.73)

        *IP6的节点上操作:yum安装,自建yum源,将自建 yum源传给其他主机,安装相同的MariaDB-Galera-server。如下图

                     cat > /etc/yum.repos.d/mysql.repo <<EOF
                     > [mysqsl]
                      > baseurl=https://mirrors.tuna.tsinghua.edu.cn/mariadb/mariadb-5.5.64/yum/centos7-amd64/
                      > gpgcheck=0
                     > EOF

                 

        *IP72,73节点执行相同的操作 

        *三个节点执行相同的操作:安装yum install MariaDB-Galera-server 

        *节点6操作:修改配置文件vim  /etc/my.cnf.d/server.cnf,如下图

              

              把配置好的文件复制并覆盖到其他节点上:scp /etc/my.cnf.d/server.cnf 192.168.198.[72,73]:/etc/my.cnf.d/

              首次启动时,需要初始化集群,在其中一个节点上执行命令:/etc/init.d/mysql start --wsrep-new-cluster

              而后正常启动其它节点: service mysql start

              在各个节点上查看ss -ntl,端口3306已启动

              在xshell右下脚选择全部会话输入mysql三台节点机器都进入mysql模式

              测试操作:在mysql数据库中创建一个数据库,三个节点机器都会同步

              查看集群中相关系统变量和状态变量:SHOW VARIABLES LIKE 'wsrep_%';SHOW STATUS LIKE 'wsrep_%';

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------

        

       

  • 相关阅读:
    图片一句话木马简单制作方法
    kali各工具使用介绍
    隐写工具zsteg安装及使用教程
    内网渗透中mimikatz的使用
    kali meterpreter中mimikatz模块获取密码
    一个恐怖份子上传了这张照片到社交网络。里面藏了什么信息?
    攻防世界MISC进阶之签到题
    EMC存储重装系统分区丢失恢复方法
    服务器数据迁移方法
    教您分辨U盘不能识别是哪儿坏了
  • 原文地址:https://www.cnblogs.com/dengkui/p/11179806.html
Copyright © 2011-2022 走看看