Example #1
0
        static void Main(string[] args)
        {
            if (args.Length < 2)
            {
                Console.WriteLine("Usage: SlowLog_Snapshooter.exe srcConnName dstConnName TimeBeg TimeEnd" +
                                  "TimeFormat \"YYYY-MM-DD HH24:MI:SS\" - example \"2018-03-03 14:45:00\""
                                  );
                Environment.Exit(0);
            }

            string   srcName = args[0]; // "AMWAY-PERF";
            string   dstName = args[1];
            DateTime timeBeg = DateTime.Parse(args[2]);
            DateTime timeEnd = DateTime.Parse(args[3]);

            MySqlConnection connDst = DBHelper.Connect(dstName);

            long snapId = DBHelper.CreateSlow_LogSnapshot(connDst, srcName, timeBeg, timeEnd);

            WriteLog("Snapshot created: ID = " + snapId);

            MySqlConnection connSrc   = DBHelper.Connect(srcName);
            string          tableName = "mysql.slow_log";

            WriteLog("Init & load started");

            WRTableMeta meta = new WRTableMeta(connDst, tableName);

            meta.FillFieldsCollection();

            bool        haveNewData   = true;
            WRTableData data          = new WRTableData(meta, connSrc, connDst);
            int         batchSize     = 10000;
            int         currentOffset = 0;
            int         curDataRowNum = 0;

            while (haveNewData)
            {
                WriteLog(String.Format("Init & load (offset = {0})", currentOffset));
                data.LoadDataFromSrc(String.Format("WHERE start_time between '{0}' and '{1}' LIMIT {2} OFFSET {3}", timeBeg.ToString("yyyy-MM-dd HH:mm:ss"), timeEnd.ToString("yyyy-MM-dd HH:mm:ss"), batchSize, currentOffset));

                WriteLog("SaveData started");
                data.SaveDataToDst(snapId);
                DBHelper.Commit(connDst);
                WriteLog("SaveData finished");

                currentOffset += batchSize;
                haveNewData    = (data.TableData.Rows.Count > 0);
            }
            ;

            connSrc.Close();

            // cleanUp
            connDst.Close();

            WriteLog("Wrapping up");
        }
        static void Main(string[] args)
        {
            if (args.Length < 2)
            {
                Console.WriteLine("Usage: WR_Snapshooter.exe srcConnName dstConnName [snapshot-comments]");  Environment.Exit(0);
            }

            string srcName          = args[0]; // "AMWAY-PERF";
            string dstName          = args[1];
            string snapshotComments = (args.Length > 2) ? args[2] : String.Empty;

            WriteLog(String.Format("Started {0} -> {1}", srcName, dstName));

            MySqlConnection connDst = DBHelper.Connect(dstName);

            long snapId = DBHelper.CreateSnapshot(connDst, srcName, snapshotComments);

            WriteLog("Snapshot created: ID = " + snapId);

            List <string>      tablesToProcess  = ConfigurationManager.GetSection("TablesToProcess") as List <string>;
            List <WRTableData> tablesDataPieces = new List <WRTableData>();

            MySqlConnection connSrc = DBHelper.Connect(srcName);

            WriteLog("Init & load started");
            // init & load data from src
            foreach (string tableName in tablesToProcess)
            {
                WriteLog("Load for table " + tableName);
                WRTableMeta meta = new WRTableMeta(connDst, tableName);
                meta.FillFieldsCollection();

                WRTableData data = new WRTableData(meta, connSrc, connDst);
                data.LoadDataFromSrc();
                tablesDataPieces.Add(data);
            }
            WriteLog("Init & load finished");
            connSrc.Close();

            WriteLog("SaveData started");
            // save to dst
            foreach (WRTableData tableData in tablesDataPieces)
            {
                WriteLog("SaveData for table " + tableData.TableMeta.DstTableName);
                tableData.SaveDataToDst(snapId);
            }
            WriteLog("SaveData finished");

            // cleanUp
            DBHelper.Commit(connDst);
            connDst.Close();

            WriteLog("Wrapping up");
        }