澳门美高梅游戏官方网站 > 澳门美高梅游戏 > 创造_Log表及触发器,0解压版安装步骤

原标题:创造_Log表及触发器,0解压版安装步骤

浏览次数:195 时间:2019-10-11

mysqlreplicate

主从复制工具

mysqlreplicate --master=admin:admin@10.186.30.73:3307 
          --slave=admin:admin@10.186.30.58:3307 --rpl-user=rpl:rpl

--pedantic选项来确认保障主和从复制作而成功,当且仅当多个服务器械备同样的积攒引擎,一样的暗中认可存款和储蓄引擎和同一的InnoDB存款和储蓄引擎

焚林而猎navicat客商端工具连不上服务的难题

 

1. 修改host文件

在颁发服务器和订阅服务器都修改C:WindowsSystem32driversetc文件,插手IP和主机名。假若是伸手订阅,则发布服务器不用修改也要能够;假使是推送央求,则少不了设置。因为SQL Server复制不可能因而IP进行连锁的安装。

 


解压版安装操作
官方网站下载: mysql-installer-community-8.0.12.0.msi
如上操作:
mysqld --install  安装服务
net start mysql  运行服务

ps.mycat最大的功能在于对数据库分片的管理,借使有时机,今后会开展连锁的侦察。

0. 环境

  1. 无域景况
  2. 颁发服务和分发服务器同一台主机
角色 主机名 IP 发布名 发布库名/订阅库名
发布服务器 Server1 192.168.1.100 test3 db1
分发服务器(与发布服务器同一实例) Server1 192.168.1.100 - -
订阅服务器 Client1 192.168.1.200 - db1
BEGIN TRAN   
BEGIN TRY  


--定义TAB_CURSOR
DECLARE TAB_CURSOR CURSOR read_only
FOR
   SELECT name FROM SysObjects Where XType='U' 
  -- AND name = N'T01ConstItem' 
  and [name] <> N'dtproperties'
   ORDER BY Name;

--打开
OPEN TAB_CURSOR

DECLARE @P_TabName NVARCHAR(200);
DECLARE @P_TabName_Log NVARCHAR(200);
DECLARE @P_Create_Log_Tab NVARCHAR(4000);
DECLARE @P_Create_Trig_I NVARCHAR(4000);
DECLARE @P_Create_Trig_U NVARCHAR(4000);
DECLARE @P_Create_Trig_D NVARCHAR(4000);

FETCH NEXT FROM TAB_CURSOR 
           INTO @P_TabName
--循环
WHILE (@@FETCH_STATUS <> -1)
BEGIN
   IF (@@FETCH_STATUS <> -2)
    BEGIN   
    SET @P_TabName_Log = CONCAT(@P_TabName,N'_Log');

    SET @P_Create_Log_Tab = N' SELECT * ';
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,N' ,N''I '' AS Action');
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,N' ,Getdate() AS ActionDate ');
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,N' INTO ');
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,@P_TabName_Log );
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,N' FROM  ' );
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,@P_TabName);
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,N' UNION ALL ');
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,N' SELECT TOP (1) * ');
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,N' ,N''I '' AS Action');
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,N' ,Getdate() AS ActionDate ');
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,N' FROM  ' );
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab,@P_TabName);
    SET @P_Create_Log_Tab = CONCAT(@P_Create_Log_Tab, N' WHERE 1=0 ; ');

    EXEC( @P_Create_Log_Tab);

    --SET @P_Create_Log_Tab = CONCAT(N' SET IDENTITY_INSERT ',@P_TabName_Log ,' ON '); 
    --EXEC( @P_Create_Log_Tab);


    SET @P_Create_Trig_I = N' create trigger ';
    SET @P_Create_Trig_I = CONCAT(@P_Create_Trig_I,N' trig_',@P_TabName,N'_I ');
    SET @P_Create_Trig_I = CONCAT(@P_Create_Trig_I,N' on ',@P_TabName,N' after INSERT as ');
    SET @P_Create_Trig_I = CONCAT(@P_Create_Trig_I, N' begin ');    
    SET @P_Create_Trig_I = CONCAT(@P_Create_Trig_I, N'insert into ',@P_TabName_Log );
    SET @P_Create_Trig_I = CONCAT(@P_Create_Trig_I,N' select * , N''I'',Getdate() from Inserted ; ' );
    SET @P_Create_Trig_I = CONCAT(@P_Create_Trig_I, N'end ');

    --select @P_Create_Trig_I;

    EXEC( @P_Create_Trig_I);

    SET @P_Create_Trig_U = N' create trigger ';
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U,N' trig_',@P_TabName,N'_U ');
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U,N' on ',@P_TabName,N' after UPDATE as ');
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U, N' begin ');
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U, N'insert into ',@P_TabName_Log );
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U,N' select * , N''UD'',Getdate() from Deleted ; ' );
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U, N'insert into ',@P_TabName_Log );
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U,N' select * , N''UI'',Getdate() from Inserted ; ' );
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U, N'end ');
    EXEC( @P_Create_Trig_U);

    SET @P_Create_Trig_U = N' create trigger ';
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U,N' trig_',@P_TabName,N'_D ');
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U,N' on ',@P_TabName,N' after DELETE as ');
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U, N' begin ');
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U, N'insert into ',@P_TabName_Log );
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U,N' select * , N''D'',Getdate() from Deleted ; ' );
    SET @P_Create_Trig_U = CONCAT(@P_Create_Trig_U, N'end ');
    EXEC( @P_Create_Trig_U);

    END
   FETCH NEXT FROM TAB_CURSOR INTO @P_TabName
END

--关闭
CLOSE TAB_CURSOR
--释放
DEALLOCATE TAB_CURSOR

COMMIT TRAN;  

END TRY  
BEGIN CATCH  
    SELECT ERROR_MESSAGE() AS ErrorMessage  
    ,ERROR_SEVERITY() AS ErrorSeverity  
    ,ERROR_STATE() AS ErrorState  
    ROLLBACK TRAN;  
END CATCH  

mysql-utilities 是python编写 MySQL官方版的指令行工具集,蕴含主从校验,主从创立,主从切换等等

mycat:图片 1

6. 设置增多新品类不开端化整个快速照相

在发表服务器日常会新创设表或另外数据库对象,如存款和储蓄进度或函数等,倘诺要把那些新的类型参加到曾经存在的订阅中时,要求初叶化这一个项目。但暗中认可的设置是初阶化整个快速照相全体品类的。那对于大的快速照相来讲,花费异常高。

上边安装只初叶化新增的种类。

use db1;
GO

EXEC sys.sp_changepublication 
    @publication = 'test3', 
    @property = N'immediate_sync', 
    @value = N'false'
GO

EXEC sys.sp_changepublication 
    @publication = 'test3', 
    @property = N'allow_anonymous',
    @value = N'false'
GO

接下来再起步快照代理就能够对新加上的项目变越来越快照。
(右键选用发布,选取“查看快速照相代理状态”——“运营”)

约等于运作以下脚本:

EXEC sys.sp_startpublication_snapshot
@publication = 'test3'
go
通过select union all 的方式,避免了IDENTITY 的“复制”,
即如果原表有 PK 如 ID Identity,_Log表 仅“复制”ID int,“不复制” Identity属性,
以便 Insert Update Delete时,可以Insert到Log表。)

mysqlrpladmin

主从复制管理工科具

mysqlrpladmin --master=admin:admin@10.186.30.73:3307 
          --slave=admin:admin@10.186.30.58:3307 Health

mysqlrpladmin --master=admin:admin@10.186.30.73:3307 
          --slave=admin:admin@10.186.30.58:3307 gtid

mysqlrpladmin --master=admin:admin@10.186.30.73:3307 
         --slave=admin:admin@10.186.30.58:3307 reset

mysqlrpladmin -vv --master=admin:admin@10.186.30.73:3307 
         --slave=admin:admin@10.186.30.58:3307  
         --new-master=admin:admin@10.186.30.58:3307 --demote-master switchover

mysqlrpladmin -vv --slave=admin:admin@10.186.30.58:3307 failover

mysqlrpladmin 1.3.6对mysql5.7 会出现错误
# Checking privileges.
ERROR: Query failed. 1054 (42S22): Unknown column 'password' in 'field list'

修改读库的数据:图片 2

5. 在订阅服务器新建订阅

在SSMS上,依据引导一步一步创设新的订阅(以伏乞订阅pull subcription为例)。在Distribution Agent Security这一步,设置是这么的:

  • Run under the SQL Server Agent service account
  • Connect to the Distribution: Using the following SQL Server login
    此处运用了发表服务器的sa客户和密码。当然也能够别的创设特意的SQL Server复制账号来三回九转。
  • Connect to the Subscriber: By impersonating the process account

假定是推送push subcription的话,第2,3个选项是倒转的。即Using the following SQL Server login填写的是订阅服务器的SQL Server账号,让分发服务器有权力推送数据到订阅服务器。

1.“复制”现有表,

mysqlrplcheck

主从复制检查实验工具

mysqlrplcheck --master=admin:admin@10.186.30.73:3307 
          --slave=admin:admin@10.186.30.58:3307 
           --show-slave-status -vv

终止读库的劳务:图片 3

4. 在发布服务器新建揭橥和散发

在SSMS上,依照指引一步一步创制新的公告。如果未有散发服务器,在向导中,会进展创办。(分发的习性)设置快速照相文件为\Server1ReplData。最后能够转变创制发表的SQL脚本,能够保存起来,未来再重启成立,或是其余服务器要求创设发布,只供给修改一下本子,再推行就能够。

缘何不直接设置D:ReplData?其实是可以的,但暗许使用\Server1ReplData其一文件的话,在订阅端私下认可也是读取那么些快速照相文件夹\Server1ReplData,那样相比便于。

理之当然,能够手动再修改(能够独自修改公布的快速照相文件夹路线,也得以修改订阅时的快照文件夹路线),可是依旧提出采纳分发的安装的默许文件的互联网路线格式。

也得以运用FTP或任何办法把快照文件复制到订阅服务器做初步化就能够。SQL Server复制也支撑备份数据库的章程开展订阅的起初化。

在第1步中,私下认可快速照相文件夹也是足以停放真正的网络盘上,并不是公布服务器上。思索到平昔写到互连网盘,但需求考虑那大概会促成互连网影响,假诺在调换极大的快速照相进度中,变成网络不通,乃至停顿,对生育导致影响。

创造_Log表及触发器,0解压版安装步骤。贯彻表数据的增修删时,记录日志。

本文由澳门美高梅游戏官方网站发布于澳门美高梅游戏,转载请注明出处:创造_Log表及触发器,0解压版安装步骤

关键词:

上一篇:新建存过,数据的增加和删除改

下一篇:没有了