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"); }