parse args for binlog2sql
()
| 52 | |
| 53 | |
| 54 | def parse_args(): |
| 55 | """parse args for binlog2sql""" |
| 56 | |
| 57 | parser = argparse.ArgumentParser(description='Parse MySQL binlog to SQL you want', add_help=False) |
| 58 | connect_setting = parser.add_argument_group('connect setting') |
| 59 | connect_setting.add_argument('-h', '--host', dest='host', type=str, |
| 60 | help='Host the MySQL database server located', default='127.0.0.1') |
| 61 | connect_setting.add_argument('-u', '--user', dest='user', type=str, |
| 62 | help='MySQL Username to log in as', default='root') |
| 63 | connect_setting.add_argument('-p', '--password', dest='password', type=str, nargs='*', |
| 64 | help='MySQL Password to use', default='') |
| 65 | connect_setting.add_argument('-P', '--port', dest='port', type=int, |
| 66 | help='MySQL port to use', default=3306) |
| 67 | interval = parser.add_argument_group('interval filter') |
| 68 | interval.add_argument('--start-file', dest='start_file', type=str, help='Start binlog file to be parsed') |
| 69 | interval.add_argument('--start-position', '--start-pos', dest='start_pos', type=int, |
| 70 | help='Start position of the --start-file', default=4) |
| 71 | interval.add_argument('--stop-file', '--end-file', dest='end_file', type=str, |
| 72 | help="Stop binlog file to be parsed. default: '--start-file'", default='') |
| 73 | interval.add_argument('--stop-position', '--end-pos', dest='end_pos', type=int, |
| 74 | help="Stop position. default: latest position of '--stop-file'", default=0) |
| 75 | interval.add_argument('--start-datetime', dest='start_time', type=str, |
| 76 | help="Start time. format %%Y-%%m-%%d %%H:%%M:%%S", default='') |
| 77 | interval.add_argument('--stop-datetime', dest='stop_time', type=str, |
| 78 | help="Stop Time. format %%Y-%%m-%%d %%H:%%M:%%S;", default='') |
| 79 | parser.add_argument('--stop-never', dest='stop_never', action='store_true', default=False, |
| 80 | help="Continuously parse binlog. default: stop at the latest event when you start.") |
| 81 | parser.add_argument('--help', dest='help', action='store_true', help='help information', default=False) |
| 82 | |
| 83 | schema = parser.add_argument_group('schema filter') |
| 84 | schema.add_argument('-d', '--databases', dest='databases', type=str, nargs='*', |
| 85 | help='dbs you want to process', default='') |
| 86 | schema.add_argument('-t', '--tables', dest='tables', type=str, nargs='*', |
| 87 | help='tables you want to process', default='') |
| 88 | |
| 89 | event = parser.add_argument_group('type filter') |
| 90 | event.add_argument('--only-dml', dest='only_dml', action='store_true', default=False, |
| 91 | help='only print dml, ignore ddl') |
| 92 | event.add_argument('--sql-type', dest='sql_type', type=str, nargs='*', default=['INSERT', 'UPDATE', 'DELETE'], |
| 93 | help='Sql type you want to process, support INSERT, UPDATE, DELETE.') |
| 94 | |
| 95 | # exclusive = parser.add_mutually_exclusive_group() |
| 96 | parser.add_argument('-K', '--no-primary-key', dest='no_pk', action='store_true', |
| 97 | help='Generate insert sql without primary key if exists', default=False) |
| 98 | parser.add_argument('-B', '--flashback', dest='flashback', action='store_true', |
| 99 | help='Flashback data to start_position of start_file', default=False) |
| 100 | parser.add_argument('--back-interval', dest='back_interval', type=float, default=1.0, |
| 101 | help="Sleep time between chunks of 1000 rollback sql. set it to 0 if do not need sleep") |
| 102 | return parser |
| 103 | |
| 104 | |
| 105 | def command_line_args(args): |