实操题
虚谷数据库产品实操试题
一、部署3节点虚谷数据库集群。(10分)
**要求:**提供cluster.ini截图和show clusters结果截图。
文件解压缩
- 在根目录下创建目录xgdbms_3node
mkdir xgdbms_3node
- 将数据库文件解压缩至目录xgdbms_3node下。原文件在opt下保存着
cd /opt tar -zxvf XuGuServer-12_20231017-trial-linux-x64.tar.gz -C /xgdbms_3node/
- 进入xgdbms_3node—>XuGuServer下
cd /xgdbms_3node/ cd XuGuServer
修改配置文件
部署集群,则在SETUP目录下配置cluster.ini文件,各节点对应修改MY_NID值。第三个节点角色设置为SQWG
- 将opt下cluster.ini文件复制到SETUP目录下(/xgdbms_3node/XuGuServer/SETUP)
cp /opt/cluster.ini /xgdbms_3node/XuGuServer/SETUP/
- 进入SETUP目录,打开cluster.ini文件进行配置
cd SETUP/ vim cluster.ini -- 修改各个节点的MY_NID和IP
三个cluster.ini截图
- 启动数据库。进入bin目录,使用xugu_start.sh启动
cd ../BIN/ sh xugu_start.sh
- 查看日志
tailf stdout.txt
- 启动sql
./xgconsole nssl 127.0.0.1 5138 SYSTEM SYSDBA SYSDBA show clusters
show clusters 后截图
二、部署单机虚谷数据库。(10分)
通过需改mount.ini文件,将DATA1.DBF、DATA2.DBF文件放置在/home/data1/目录下,将DATA3.DBF、DATA4.DBF文件放置在/home/data2/目录下。
**要求:**提供show clusters结果截图与select * from sys_datafiles结果截图。
- 在node1服务器根目录新建xgdbms_1node目录,并解压数据库文件至此目录
mkdir xgdbms_1node tar -zxvf /opt/XuGuServer-12_20231017-trial-linux-x64.tar.gz -C xgdbms_1node/
- 进入SETUP目录,修改mount.ini文件
cd xgdbms_1node/XuGuServer/SETUP vim mount.ini /data1 /home/data1 /data2 /home/data2
- 修改datafile.ini文件
vim datafile.ini #DATA_FILES /data1/DATA1.DBF /data1/DATA2.DBF /data2/DATA3.DBF /data2/DATA4.DBF
- 创建对应文件夹
mkdir /home/data1 mkdir /home/data2
- 修改单机数据库端口,进入SETUP目录下
vim xugu.ini 修改端口为5139
- 启动数据库。进入bin目录,使用xugu_start.sh启动
cd ../BIN/ sh xugu_start.sh
- 查看日志
tailf stdout.txt
- 启动sql
./xgconsole nssl 127.0.0.1 5139 SYSTEM SYSDBA SYSDBA show clusters
show clusters 后截图
select * from sys_datafiles截图
三、备份恢复(30分)
**要求:**提供以下各步骤截图
1、连接3节点集群,创建数据库DB1,在DB1数据库中创建用户USER1,在模式USER1下创建表TABLE1,字段A数据类型INT,从1开始自增,步长为1,字段B数据类型VARCHAR。
- 进入3节点集群BIN目录,连接集群数据库
./xgconsole nssl 127.0.0.1 5138 SYSTEM SYSDBA SYSDBA
- 创建数据库DB1,创建用户USER1, 创建表TABLE1. TEST_123@ 加密后 VEVTVF8xMjNA
create database TEST_DB1; use TEST_DB1; create user TEST_USER1 IDENTIFIED BY 'TEST_123@' valid until '2029-01-01'; create table TEST_USER1.TEST_TABLE1(A int IDENTITY(1,1) ,B DATATIME);
2、向表中插入1000条数据,其中B插入随机字符串。
BEGIN FOR i IN 1..1000 LOOP INSERT INTO TEST_USER1.TEST_TABLE1 VALUES(i,now()); END LOOP; COMMIT; END; /
3、备份数据库DB1。
文件在 cd XHOME/BACKUP/
BACKUP DATABASE TO '/BACKUP/DB_BAK.EXP';
4、在单机数据库中创建数据库DB2,将DB1备份内容恢复到DB2中。
复制备份文件到单机数据库XHOME/BACKUP目录下
cp /xgdbms_3node/XuGuServer/XHOME/BACKUP/DB_BAK.EXP /xgdbms_1node/XuGuServer/XHOME/BACKUP/
- 创建单机数据库DB2
cd /xgdbms_1node/XuGuServer/BIN/ ./xgconsole nssl 127.0.0.1 5139 SYSTEM SYSDBA SYSDBA create database TEST_DB2; use TEST_DB2;
- 恢复备份内容
RESTORE DATABASE TEST_DB1 FROM '/BACKUP/DB_BAK.EXP'; select count(1) from TEST_USER1.TEST_TABLE1;
四、同步工具(20分)
1、部署同步工具,由3节点集群的DB1库向单机的DB2库同步。
**要求:**提供同步工具配置文件和启动成功截图。
- 连接G节点DB1数据库开启变更记载
./xgconsole nssl 127.0.0.1 5138 SYSTEM SYSDBA SYSDBA 在sql界面执行 set log_archive_mode to 1; --重启集群 ps -ef|grep xugu kill -9 xx sh xugu_start.sh ./xgconsole nssl 192.168.10.132 5138 DB1 SYSDBA SYSDBA use DB1; exec dbms_replication.create_modify_source('*','*'); exec dbms_replication.create_subscriber('syncer','SYSDBA');
- 在G节点安装同步工具。文件在opt下,复制到tools目录下
cd / mkdir tools cd tools cp /opt/xugu-sync-1.3.0-realease.zip /tools/xugu-sync-1.3.0-realease.zip unzip xugu-sync-1.3.0-realease.zip cd xugu-sync-1.3.0-realease/config
vim cfg.properties #type in {db,kafka,file} source.type=db aim.type=db # xugu binlog source config source.log.db=DB1 #这里改为源端db source.db.usr=SYSDBA source.db.pwd=U1lTREJB source.log.suber.name=syncer #刚才创建的订阅者名称 source.log.filter=null source.log.forward=false source.log.partion=8 source.log.fetch.size=20 source.log.ips=192.168.10.132 #G节点ip source.db.port=5138 source.commit_rows=1000 ddl.support=true #支持ddl同步 redo.offset.server=true # kafka source config source.kafka.parathd=8 source.topic=null # to kafka zk.connect=192.168.2.218:2181 case.sensitive=false topic.partition=8 repeat.pos.kafka=false # to file file.dir=F: mp file.split.size=100 file.type=SQL # to db writer.db=xugu #类型为xugu writer.schema=SYSDBA #改为USER1 writer.thd.num=8 writer.parathd.num=1
vim dbcfg.properties target-db.user=SYSDBA #目标端用户USER1 target-db.password=U1lTREJB #TEST_123@ 加密后 VEVTVF8xMjNA target-db.driverClass=com.xugu.cloudjdbc.Driver target-db.jdbcUrl=jdbc:xugu://192.168.10.128:5139/DB2 #单机restore_db,mysql改为xugu binlog-db.user=SYSDBA binlog-db.password=U1lTREJB binlog-db.driverClass=com.xugu.cloudjdbc.Driver binlog-db.jdbcUrl=jdbc:xugu://192.168.10.132:5138/DB1?char_set=utf8 #G节点数据库
- 启动
cd .. sh xgsyn.sh start tail -f nohup.out 关闭 sh xgsyn.sh stop
2、向DB1中TABLE1插入数据,在DB2中验证是否同步成功。
**要求:**提供插入数据后源库和目标库test1表行数截图。
G节点数据库新增数据 log有报错先看数据是否同步,同步了就不管,没有就停掉同步服务再启动后试
./xgconsole nssl 127.0.0.1 5138 SYSTEM SYSDBA SYSDBA use DB1; INSERT INTO TEST_USER1.TEST_TABLE1(A,B) VALUES (1001,now()); SELECT COUNT(1) FROM TEST_USER1.TEST_TABLE1; REINDEX UK_IDX_S652617156107843; ./xgconsole nssl 127.0.0.1 5139 SYSTEM SYSDBA SYSDBA use DB2; SELECT COUNT(1) FROM TEST_USER1.TEST_TABLE1;
五、监控工具(30分)
使用虚谷监控工具监控3节点集群。
要求:
1、提供3个节点的节点资源使用情况监控截图共3张(菜单栏:操作系统->资源负载->节点资源->实时监控)
监控3个节点
tar -zxvf XuguCM-2.12.0.202310191500-linux-x64.tar.gz
yum install -y net-snmp net-snmp-utils
vim /etc/snmp/snmpd.confservice snmpd start
snmpwalk -v2c -c public localhost ifName
./startdb.sh
./startapp.sh
tailf logs/catalina.outhttp://192.168.10.132:8080/xgcm/login
admin/admin配置管理 集群配置 添加集群 密码:SYSDBA
添加节点 ip
进程名:xugu_linux_x64_trial
路径
/xgdbms_3node/XuGuServer/XHOME/DATA/DATA1.DBF
/xgdbms_3node/XuGuServer/XHOME/DATA/DATA2.DBF
/xgdbms_3node/XuGuServer/XHOME/DATA/DATA3.DBF
/xgdbms_3node/XuGuServer/XHOME/DATA/DATA4.DBFTEST_123@ 加密后 VEVTVF8xMjNA
2、提供数据库的节点状态监控截图1张(菜单栏:数据库->集群名称->数据库对象->数据库状态->集群状态->节点状态监控)
3、模拟死锁和对象失效两种情况,监控工具有告警。(提供右上角弹窗告警截图2张)
死锁:
先执行: -- 事务1 begin; -- SQL1更新id为1的 update TEST_USER1.TEST_table1 set B = now() where A = 1; 在执行: -- 事务2 begin; -- SQL1更新id为2的 update TEST_USER1.TEST_table1 set B = now() where A = 2; 在执行 -- SQL2更新id为2的 update TEST_USER1.TEST_table1 set B = now() where A = 2; 在执行 -- SQL2更新id为1的 update TEST_USER1.TEST_table1 set B = now() where A = 1; commit; commit;
案例二
(窗口一)session1– 第一步
begin;
select * from USER1.table1 where A = 1 lock in share mode;
– 第三步单独执行下面语句
– update USER1.table1 set B= ‘mu’ where A=1;(窗口二)session2
– 第二步
begin;
select * from USER1.table1 where A = 1 lock in share mode;
– 第四步单独执行下面语句
– update USER1.table1 set B = ‘cc’ where A= 1;
可以尝试删除一个字段,此时锁表,然后在进行查询
where A = 1;
commit;
commit;案例二 (窗口一)session1 – 第一步 begin; select * from USER1.table1 where A = 1 lock in share mode; – 第三步单独执行下面语句 – update USER1.table1 set B= ‘mu’ where A=1; (窗口二)session2 – 第二步 begin; select * from USER1.table1 where A = 1 lock in share mode; – 第四步单独执行下面语句 – update USER1.table1 set B = ‘cc’ where A= 1;
可以尝试删除一个字段,此时锁表,然后在进行查询