{ "info": { "author": "Counsyl Platform Team", "author_email": "opensource@counsyl.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3 :: Only", "Topic :: Database", "Topic :: Software Development", "Topic :: System :: Systems Administration" ], "description": "```\n __ \n /\\ \\ \n _ __ \\_\\ \\ ____ ___ _____ \n/\\`'__\\/'_` \\ /',__\\ /'___\\/\\ '__`\\ \n\\ \\ \\//\\ \\L\\ \\/\\__, `\\ /\\ \\__/\\ \\ \\L\\ \\\n \\ \\_\\\\ \\___,_\\/\\____/ \\ \\____\\\\ \\ ,__/\n \\/_/ \\/__,_ /\\/___/ _______\\/____/ \\ \\ \\/ \n /\\______\\ \\ \\_\\ \n \\/______/ \\/_/ \n```\n\nCopy one RDS instance onto another, even if the destination instance already\nexists. This tool was motivated by the need to keep a writable staging instance\nup to date with production data on a regular basis, which allows devs to test\nmigrations before deploying to production.\n\nUnless your database is very small, this tool is typically much faster than\nusing `pg_dump`, `mysqldump`, or the like.\n\nSee [the docstring](rds_cp/rds_cp.py).\n\n## Installing\n\nThis package requires Python 3.\n\n```sh\n$ pip3 install rds_cp\n```\n\n## Example usage\n\n```\n$ make install\n$ AWS_DEFAULT_REGION=us-west-2 \\\n AWS_ACCESS_KEY_ID=xxx \\\n AWS_SECRET_ACCESS_KEY=yyy \\\n RDSCP_SRC_NAME=prod-read-replica \\\n RDSCP_DEST_NAME=staging \\\n RDSCP_DEST_INSTANCE_CLASS=db.m3.medium \\\n rds_cp\n```\nor equivalently\n```\n$ AWS_DEFAULT_REGION=us-west-2 \\\n AWS_ACCESS_KEY_ID=xxx \\\n AWS_SECRET_ACCESS_KEY=yyy \\\n rds_cp --src=prod-read-replica --dest=staging --dest-class=db.m3.medium\n```\n\nAWS configuration information may be provided in any way that works with \n`awscli`, e.g. through environment variables or `~/.aws`.\n\n## Recommendations\n\n### Use a read-replica as `SRC`\n\nPer the [AWS\ndocs](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateSnapshot.html),\ntaking snapshots can cause minor service interruption on the underlying RDS\ninstance: \n\n> During the backup window, storage I/O may be suspended while your data is\n> being backed up and you may experience elevated latency. This I/O suspension\n> typically lasts for the duration of the snapshot. This period of I/O\n> suspension is shorter for Multi-AZ DB deployments, since the backup is taken\n> from the standby, but latency can occur during the backup process.\n\nAs a result, it's recommended that you aim this tool at a read-replica of\nwhatever database you want to copy. Read-replicas are easy to configure through\nthe AWS console.\n\n### Prime the pump before a first run\n\nIf you're running this tool for the first time (or even if a considerable\namount of data has been added since the last run), I recommend manually taking\na snapshot of the SRC database beforehand. This is due to how AWS snapshotting\nworks; the time taken to perform a snapshot is a function of whether other\nsnapshots exist which contain a sizable subset of that information. So if you\nhaven't snapshotted in a while, the first snapshot may take a long time.\n\nAs you run `rds_cp` more frequently, e.g. on a cron, the time taken for\neach run will reduce due to the shrinking size of the snapshot diff.\n\nIf `rds_cp` is run and the time to snapshot exceeds a few minutes, an error\nwill be thrown. So prime the pump first!\n\n## Testing\n\nRun\n\n```\nmake test\n```\n\nI've also packaged a big honking integration test that does live AWS\nsetup and teardown. It takes about 15 minutes to run, but it's comprehensive. \n\nI *highly* recommend running this in an AZ that doesn't contain other \ninstances.\n\n``` \n$ make install\n$ AWS_DEFAULT_REGION=us-east-1 AWS_ACCESS_KEY_ID=x AWS_SECRET_ACCESS_KEY=y ./tests/integration_tests.py\n```", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "UNKNOWN", "keywords": null, "license": "UNKNOWN", "maintainer": null, "maintainer_email": null, "name": "rds-cp", "package_url": "https://pypi.org/project/rds-cp/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/rds-cp/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/rds-cp/0.1.2/", "requires_dist": null, "requires_python": null, "summary": "cp for RDS instances", "version": "0.1.2" }, "last_serial": 2011310, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "12a5ea6bf1db79bb1ec0eb6e8cdad958", "sha256": "37bb1d56b4f2320ea83abe70637396cf2fd1a90e3c6597847e3abe172cfca684" }, "downloads": -1, "filename": "rds_cp-0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "12a5ea6bf1db79bb1ec0eb6e8cdad958", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9727, "upload_time": "2016-03-16T23:11:20", "url": "https://files.pythonhosted.org/packages/b2/db/5686da6afac4a2e3a3d278db6c36b1ba2a87eb3449f1ab86685e19de2884/rds_cp-0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f8fad85e71e538186091033e664895b8", "sha256": "154c0d2a3797135b25cb4fc5c24909c7f936c366a18dbfaaad8fa9632a4ae310" }, "downloads": -1, "filename": "rds_cp-0.1.tar.gz", "has_sig": false, "md5_digest": "f8fad85e71e538186091033e664895b8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6597, "upload_time": "2016-03-16T23:11:11", "url": "https://files.pythonhosted.org/packages/e8/7d/cf8e55dd81bc9655b3af2e999874122aafe95f19b25f4b47fae78edd3164/rds_cp-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "152b67566b2585180d7add76e26848fd", "sha256": "240fe5c69f76b895a5f6332235efd2832a8df240dcda6d044c3a4d71b996807c" }, "downloads": -1, "filename": "rds_cp-0.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "152b67566b2585180d7add76e26848fd", "packagetype": "bdist_wheel", "python_version": "2.7", "requires_python": null, "size": 9759, "upload_time": "2016-03-16T23:17:26", "url": "https://files.pythonhosted.org/packages/29/0b/9d197c37b206404284b533ef3b7892a7cdbc24c754bb548e3b732d44d9cf/rds_cp-0.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1db20a1c5f0f283099add3fbd3fd4c91", "sha256": "8e6efac442cf9604a7d806fb4b31daafa3ad4a60e7424cf44851001023512ea5" }, "downloads": -1, "filename": "rds_cp-0.1.1.tar.gz", "has_sig": false, "md5_digest": "1db20a1c5f0f283099add3fbd3fd4c91", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7387, "upload_time": "2016-03-16T23:17:20", "url": "https://files.pythonhosted.org/packages/07/91/f8a0daed9c95795d15905e3ac5f1031486010c795c256c8ef2e0afcc245c/rds_cp-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "4b5a673bcb5bbcbe52d680399623f4ef", "sha256": "d808df524452e509c987420247eaf597691ba0bb555ca094bec33e3bf2c0bc9a" }, "downloads": -1, "filename": "rds_cp-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4b5a673bcb5bbcbe52d680399623f4ef", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9764, "upload_time": "2016-03-16T23:36:55", "url": "https://files.pythonhosted.org/packages/a0/63/7ca403ddd46a79a54f2cbc8658de83a5591a43104801130e78709a89bc2a/rds_cp-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43842c6b500578b39329697d8f7c8113", "sha256": "971db30d019fb327f92dc272f87006a7c8fec1818f1c0b129ce29950980879a1" }, "downloads": -1, "filename": "rds_cp-0.1.2.tar.gz", "has_sig": false, "md5_digest": "43842c6b500578b39329697d8f7c8113", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7361, "upload_time": "2016-03-16T23:36:50", "url": "https://files.pythonhosted.org/packages/eb/5a/cca2e94e5d904b5b5618c6cee141b4f955ef89889cbfb616ef5c31ae83ba/rds_cp-0.1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4b5a673bcb5bbcbe52d680399623f4ef", "sha256": "d808df524452e509c987420247eaf597691ba0bb555ca094bec33e3bf2c0bc9a" }, "downloads": -1, "filename": "rds_cp-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "4b5a673bcb5bbcbe52d680399623f4ef", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 9764, "upload_time": "2016-03-16T23:36:55", "url": "https://files.pythonhosted.org/packages/a0/63/7ca403ddd46a79a54f2cbc8658de83a5591a43104801130e78709a89bc2a/rds_cp-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "43842c6b500578b39329697d8f7c8113", "sha256": "971db30d019fb327f92dc272f87006a7c8fec1818f1c0b129ce29950980879a1" }, "downloads": -1, "filename": "rds_cp-0.1.2.tar.gz", "has_sig": false, "md5_digest": "43842c6b500578b39329697d8f7c8113", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7361, "upload_time": "2016-03-16T23:36:50", "url": "https://files.pythonhosted.org/packages/eb/5a/cca2e94e5d904b5b5618c6cee141b4f955ef89889cbfb616ef5c31ae83ba/rds_cp-0.1.2.tar.gz" } ] }