{"action":"created","comment":{"url":"https://api.github.com/repos/pingcap/docs-cn/pulls/comments/85887572","pull_request_review_id":6573229,"id":85887572,"diff_hunk":"@@ -0,0 +1,297 @@\n+# 数据迁移\n+\n+## 概述\n+\n+该文档详细介绍了如何将 MySQL 的数据迁移到 TiDB。\n+\n+这里我们假定 MySQL 以及 TiDB 服务信息如下:\n+\n+|Name|Address|Port|User|Password|\n+|----|-------|----|----|--------|\n+|MySQL|127.0.0.1|3306|root||\n+|TiDB|127.0.0.1|4000|root||\n+\n+## 使用 checker 进行 Schema 检查\n+\n+在迁移之前，我们可以使用 TiDB 的 checker 工具，来预先检查 TiDB 是否能支持需要迁移的 table schema。如果 check 某个 table schema 失败，表明 TiDB 当前并不支持，我们不能对该 table 里面的数据进行迁移。\n+\n+### 下载官方 Binary\n+\n+#### Linux\n+\n+```bash\n+# 下载 tool 压缩包\n+wget http://download.pingcap.org/tidb-tools-latest-linux-amd64.tar.gz\n+wget http://download.pingcap.org/tidb-tools-latest-linux-amd64.sha256\n+\n+# 检查文件完整性，返回 ok 则正确\n+sha256sum -c tidb-tools-latest-linux-amd64.sha256 \n+# 解开压缩包\n+tar -xzf tidb-tools-latest-linux-amd64.tar.gz\n+cd tidb-tools-latest-linux-amd64\n+```\n+\n+### 使用 `checker` 检查\n+\n++ 在 MySQL 的 test database 里面创建几张表，并插入数据:\n+\n+```bash\n+USE test;\n+CREATE TABLE t1 (id INT, age INT, PRIMARY KEY(id)) ENGINE=InnoDB;\n+CREATE TABLE t2 (id INT, name VARCHAR(256), PRIMARY KEY(id)) ENGINE=InnoDB;\n+\n+INSERT INTO t1 VALUES (1, 1), (2, 2), (3, 3);\n+INSERT INTO t2 VALUES (1, \"a\"), (2, \"b\"), (3, \"c\");\n+```\n+\n++ 使用 `checker` 检查 test database 里面所有的 table\n+\n+```bash\n+./bin/checker -host 127.0.0.1 -port 3306 -user root test\n+2016/10/27 13:11:49 checker.go:48: [info] Checking database test\n+2016/10/27 13:11:49 main.go:37: [info] Database DSN: root:@tcp(127.0.0.1:3306)/test?charset=utf8\n+2016/10/27 13:11:49 checker.go:63: [info] Checking table t1\n+2016/10/27 13:11:49 checker.go:69: [info] Check table t1 succ\n+2016/10/27 13:11:49 checker.go:63: [info] Checking table t2\n+2016/10/27 13:11:49 checker.go:69: [info] Check table t2 succ\n+```\n+\n++ 使用 `checker` 检查 test database 里面某一个 table\n+\n+这里，假设我们只需要迁移 table `t1`。\n+\n+```bash\n+./bin/checker -host 127.0.0.1 -port 3306 -user root test t1\n+2016/10/27 13:13:56 checker.go:48: [info] Checking database test\n+2016/10/27 13:13:56 main.go:37: [info] Database DSN: root:@tcp(127.0.0.1:3306)/test?charset=utf8\n+2016/10/27 13:13:56 checker.go:63: [info] Checking table t1\n+2016/10/27 13:13:56 checker.go:69: [info] Check table t1 succ\n+Check database succ!\n+```\n+\n+### 一个无法迁移的 table 例子\n+\n+我们在 MySQL 里面创建如下表：\n+\n+```bash\n+CREATE TABLE t_error (\n+  c timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)\n+) ENGINE=InnoDB DEFAULT CHARSET=latin1;\n+```\n+\n+使用 `checker` 进行检查，会报错，表明我们没法迁移 `t_error` 这张表。\n+\n+```bash\n+./bin/checker -host 127.0.0.1 -port 3306 -user root test t_error\n+2016/10/27 13:19:28 checker.go:48: [info] Checking database test\n+2016/10/27 13:19:28 main.go:37: [info] Database DSN: root:@tcp(127.0.0.1:3306)/test?charset=utf8\n+2016/10/27 13:19:28 checker.go:63: [info] Checking table t_error\n+2016/10/27 13:19:28 checker.go:67: [error] Check table t_error failed with err: line 1 column 56 near \") ON UPDATE CURRENT_TIMESTAMP(3)\n+) ENGINE=InnoDB DEFAULT CHARSET=latin1\"\n+github.com/pingcap/tidb/parser/yy_parser.go:111:\n+github.com/pingcap/tidb/parser/yy_parser.go:124:\n+/home/jenkins/workspace/WORKFLOW_TOOLS_BUILDING/go/src/github.com/pingcap/tidb-tools/checker/checker.go:122:  parse CREATE TABLE `t_error` (\n+  `c` timestamp(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3)\n+) ENGINE=InnoDB DEFAULT CHARSET=latin1 error\n+/home/jenkins/workspace/WORKFLOW_TOOLS_BUILDING/go/src/github.com/pingcap/tidb-tools/checker/checker.go:114:\n+2016/10/27 13:19:28 main.go:68: [error] Check database test with 1 errors and 0 warnings.\n+```\n+\n+## 使用 `mydumper`/`myloader` 全量导入数据\n+\n+我们使用 `mydumper` 从 MySQL 导出数据，然后用 `myloader` 将其导入到 TiDB 里面。\n+\n+注意，虽然我们也支持使用 MySQL 官方的  `mysqldump` 工具来进行数据的迁移工作，但相比于 `mydumper`/`myloader`，性能会慢很多，对于大量数据的迁移会花费很多时间，这里我们并不推荐。\n+\n+`mydumper`/`myloader` 是一个 更强大的数据迁移工具，具体可以参考 [https://github.com/maxbube/mydumper](https://github.com/maxbube/mydumper)，你可以自行下载代码编译按照，但这里推荐我们已经编译好的二进制版本，直接使用。\n+\n+### 下载官方 Binary\n+\n+#### Linux\n+\n+```bash\n+# 下载 mydumper 压缩包\n+wget http://download.pingcap.org/mydumper-linux-amd64.tar.gz\n+wget http://download.pingcap.org/mydumper-linux-amd64.sha256\n+\n+# 检查文件完整性，返回 ok 则正确\n+sha256sum -c mydumper-linux-amd64.sha256 \n+# 解开压缩包\n+tar -xzf mydumper-linux-amd64.tar.gz\n+cd mydumper-linux-amd64\n+```\n+\n+### 从 MySQL 导出数据\n+\n+我们使用 `mydumper` 从 MySQL 导出数据，如下:\n+\n+```bash\n+./bin/mydumper -h 127.0.0.1 -P 3306 -u root -t 16 -F 128 -B test -T t1,t2 -o ./var/test\n+```\n+\n+上面，我们使用 `-B test` 表明是对 `test` 这个 database 操作，然后用 `-T t1,t2` 表明只导出 `t1`，`t2` 两张表。\n+\n+`-t 16` 表明使用 16 个线程去导出数据。`-F 128` 是将实际的 table 切分成多大的 chunk，这里就是 128MB 一个 chunk。\n+\n+**注意：在阿里云一些需要 `super privilege` 的云上面，`mydumper` 需要加上 `--no-locks` 参数，否则会提示没有权限操作。**\n+\n+### 给 TiDB 导入数据\n+\n+我们使用 `myloader` 将之前导出的数据导入到 TiDB。\n+\n+```bash\n+./bin/myloader -h 127.0.0.1 -P 4000 -u root -t 16 -q 1 -d ./var/test\n+```\n+\n+这里 `-q 1` 表明每个事物包含多少个 query，默认是 1000，我们这里使用 1 就可以了。\n+\n+导入成功之后，我们可以用 MySQL 官方客户端进入 TiDB，查看:\n+\n+```bash\n+mysql -h127.0.0.1 -P4000 -uroot\n+\n+mysql> show tables;\n++----------------+\n+| Tables_in_test |\n++----------------+\n+| t1             |\n+| t2             |\n++----------------+\n+\n+mysql> select * from t1;\n++----+------+\n+| id | age  |\n++----+------+\n+|  1 |    1 |\n+|  2 |    2 |\n+|  3 |    3 |\n++----+------+\n+\n+mysql> select * from t2;\n++----+------+\n+| id | name |\n++----+------+\n+|  1 | a    |\n+|  2 | b    |\n+|  3 | c    |\n++----+------+\n+```\n+\n+## 使用 `syncer` 增量导入数据\n+\n+上面我们介绍了如何使用 `mydumper`/`myloader` 将 MySQL 的数据全量导入到 TiDB，但如果后续 MySQL 的数据有更新，我们仍然希望快速导入，使用全量的方式就不合适了。\n+\n+TiDB 提供 `syncer` 工具能方便的将 MySQL 的数据增量的导入到 TiDB 里面。`syncer` 工具。\n+\n+`syncer` 的可执行文件跟 `checker` 都放在 TiDB tool 下面，如何获取可以参考 [使用 checker 进行 Schema 检查](#使用-check-进行-Schema-检查)。\n+\n+假设我们之前已经使用 `mydumper`/`myloader` 导入了 `t1` 和 `t2` 两张表的一些数据，现在我们希望这两张表的任何更新，都是实时的同步到 TiDB 上面。\n+\n+### MySQL 开启 binlog\n+\n+在使用 `syncer` 之前，我们必须保证：\n+\n++ MySQL 开启 binlog 功能，参考 [Setting the Replication Master Configuration](http://dev.mysql.com/doc/refman/5.7/en/replication-howto-masterbaseconfig.html)\n++ Binlog 格式必须使用 `row` format，这也是 MySQL 5.7 之后推荐的 binlog 格式，可以使用如下语句打开:\n+\n+    ```bash\n+    SET GLOBAL binlog_format = ROW;","path":"op-guide/migration.md","position":195,"original_position":198,"commit_id":"99695f80a8700538d4520e45f2c44b626b093aa4","original_commit_id":"99695f80a8700538d4520e45f2c44b626b093aa4","user":{"login":"qiuyesuifeng","id":1953644,"avatar_url":"https://avatars.githubusercontent.com/u/1953644?v=3","gravatar_id":"","url":"https://api.github.com/users/qiuyesuifeng","html_url":"https://github.com/qiuyesuifeng","followers_url":"https://api.github.com/users/qiuyesuifeng/followers","following_url":"https://api.github.com/users/qiuyesuifeng/following{/other_user}","gists_url":"https://api.github.com/users/qiuyesuifeng/gists{/gist_id}","starred_url":"https://api.github.com/users/qiuyesuifeng/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qiuyesuifeng/subscriptions","organizations_url":"https://api.github.com/users/qiuyesuifeng/orgs","repos_url":"https://api.github.com/users/qiuyesuifeng/repos","events_url":"https://api.github.com/users/qiuyesuifeng/events{/privacy}","received_events_url":"https://api.github.com/users/qiuyesuifeng/received_events","type":"User","site_admin":false},"body":"这个是不是 MySQL 必须得重启？要不要提一下?","created_at":"2016-11-01T08:00:53Z","updated_at":"2016-11-01T08:01:51Z","html_url":"https://github.com/pingcap/docs-cn/pull/21#discussion_r85887572","pull_request_url":"https://api.github.com/repos/pingcap/docs-cn/pulls/21","_links":{"self":{"href":"https://api.github.com/repos/pingcap/docs-cn/pulls/comments/85887572"},"html":{"href":"https://github.com/pingcap/docs-cn/pull/21#discussion_r85887572"},"pull_request":{"href":"https://api.github.com/repos/pingcap/docs-cn/pulls/21"}}},"pull_request":{"url":"https://api.github.com/repos/pingcap/docs-cn/pulls/21","id":91146718,"html_url":"https://github.com/pingcap/docs-cn/pull/21","diff_url":"https://github.com/pingcap/docs-cn/pull/21.diff","patch_url":"https://github.com/pingcap/docs-cn/pull/21.patch","issue_url":"https://api.github.com/repos/pingcap/docs-cn/issues/21","number":21,"state":"open","locked":false,"title":"add migration doc","user":{"login":"siddontang","id":1080370,"avatar_url":"https://avatars.githubusercontent.com/u/1080370?v=3","gravatar_id":"","url":"https://api.github.com/users/siddontang","html_url":"https://github.com/siddontang","followers_url":"https://api.github.com/users/siddontang/followers","following_url":"https://api.github.com/users/siddontang/following{/other_user}","gists_url":"https://api.github.com/users/siddontang/gists{/gist_id}","starred_url":"https://api.github.com/users/siddontang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/siddontang/subscriptions","organizations_url":"https://api.github.com/users/siddontang/orgs","repos_url":"https://api.github.com/users/siddontang/repos","events_url":"https://api.github.com/users/siddontang/events{/privacy}","received_events_url":"https://api.github.com/users/siddontang/received_events","type":"User","site_admin":false},"body":"@shenli @iamxy @iroi44\n","created_at":"2016-10-27T07:29:39Z","updated_at":"2016-11-01T08:01:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3e64dd64793725e14e7b15f848a7d40b91a36d1e","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/pingcap/docs-cn/pulls/21/commits","review_comments_url":"https://api.github.com/repos/pingcap/docs-cn/pulls/21/comments","review_comment_url":"https://api.github.com/repos/pingcap/docs-cn/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pingcap/docs-cn/issues/21/comments","statuses_url":"https://api.github.com/repos/pingcap/docs-cn/statuses/99695f80a8700538d4520e45f2c44b626b093aa4","head":{"label":"pingcap:siddontang/migration","ref":"siddontang/migration","sha":"99695f80a8700538d4520e45f2c44b626b093aa4","user":{"login":"pingcap","id":11855343,"avatar_url":"https://avatars.githubusercontent.com/u/11855343?v=3","gravatar_id":"","url":"https://api.github.com/users/pingcap","html_url":"https://github.com/pingcap","followers_url":"https://api.github.com/users/pingcap/followers","following_url":"https://api.github.com/users/pingcap/following{/other_user}","gists_url":"https://api.github.com/users/pingcap/gists{/gist_id}","starred_url":"https://api.github.com/users/pingcap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pingcap/subscriptions","organizations_url":"https://api.github.com/users/pingcap/orgs","repos_url":"https://api.github.com/users/pingcap/repos","events_url":"https://api.github.com/users/pingcap/events{/privacy}","received_events_url":"https://api.github.com/users/pingcap/received_events","type":"Organization","site_admin":false},"repo":{"id":64188788,"name":"docs-cn","full_name":"pingcap/docs-cn","owner":{"login":"pingcap","id":11855343,"avatar_url":"https://avatars.githubusercontent.com/u/11855343?v=3","gravatar_id":"","url":"https://api.github.com/users/pingcap","html_url":"https://github.com/pingcap","followers_url":"https://api.github.com/users/pingcap/followers","following_url":"https://api.github.com/users/pingcap/following{/other_user}","gists_url":"https://api.github.com/users/pingcap/gists{/gist_id}","starred_url":"https://api.github.com/users/pingcap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pingcap/subscriptions","organizations_url":"https://api.github.com/users/pingcap/orgs","repos_url":"https://api.github.com/users/pingcap/repos","events_url":"https://api.github.com/users/pingcap/events{/privacy}","received_events_url":"https://api.github.com/users/pingcap/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pingcap/docs-cn","description":"TiDB/TiKV/PD documents in Chinese.","fork":false,"url":"https://api.github.com/repos/pingcap/docs-cn","forks_url":"https://api.github.com/repos/pingcap/docs-cn/forks","keys_url":"https://api.github.com/repos/pingcap/docs-cn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pingcap/docs-cn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pingcap/docs-cn/teams","hooks_url":"https://api.github.com/repos/pingcap/docs-cn/hooks","issue_events_url":"https://api.github.com/repos/pingcap/docs-cn/issues/events{/number}","events_url":"https://api.github.com/repos/pingcap/docs-cn/events","assignees_url":"https://api.github.com/repos/pingcap/docs-cn/assignees{/user}","branches_url":"https://api.github.com/repos/pingcap/docs-cn/branches{/branch}","tags_url":"https://api.github.com/repos/pingcap/docs-cn/tags","blobs_url":"https://api.github.com/repos/pingcap/docs-cn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pingcap/docs-cn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pingcap/docs-cn/git/refs{/sha}","trees_url":"https://api.github.com/repos/pingcap/docs-cn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pingcap/docs-cn/statuses/{sha}","languages_url":"https://api.github.com/repos/pingcap/docs-cn/languages","stargazers_url":"https://api.github.com/repos/pingcap/docs-cn/stargazers","contributors_url":"https://api.github.com/repos/pingcap/docs-cn/contributors","subscribers_url":"https://api.github.com/repos/pingcap/docs-cn/subscribers","subscription_url":"https://api.github.com/repos/pingcap/docs-cn/subscription","commits_url":"https://api.github.com/repos/pingcap/docs-cn/commits{/sha}","git_commits_url":"https://api.github.com/repos/pingcap/docs-cn/git/commits{/sha}","comments_url":"https://api.github.com/repos/pingcap/docs-cn/comments{/number}","issue_comment_url":"https://api.github.com/repos/pingcap/docs-cn/issues/comments{/number}","contents_url":"https://api.github.com/repos/pingcap/docs-cn/contents/{+path}","compare_url":"https://api.github.com/repos/pingcap/docs-cn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pingcap/docs-cn/merges","archive_url":"https://api.github.com/repos/pingcap/docs-cn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pingcap/docs-cn/downloads","issues_url":"https://api.github.com/repos/pingcap/docs-cn/issues{/number}","pulls_url":"https://api.github.com/repos/pingcap/docs-cn/pulls{/number}","milestones_url":"https://api.github.com/repos/pingcap/docs-cn/milestones{/number}","notifications_url":"https://api.github.com/repos/pingcap/docs-cn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pingcap/docs-cn/labels{/name}","releases_url":"https://api.github.com/repos/pingcap/docs-cn/releases{/id}","deployments_url":"https://api.github.com/repos/pingcap/docs-cn/deployments","created_at":"2016-07-26T04:04:37Z","updated_at":"2016-10-31T06:20:34Z","pushed_at":"2016-11-01T07:06:19Z","git_url":"git://github.com/pingcap/docs-cn.git","ssh_url":"git@github.com:pingcap/docs-cn.git","clone_url":"https://github.com/pingcap/docs-cn.git","svn_url":"https://github.com/pingcap/docs-cn","homepage":null,"size":135,"stargazers_count":23,"watchers_count":23,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":5,"forks":5,"open_issues":5,"watchers":23,"default_branch":"master"}},"base":{"label":"pingcap:master","ref":"master","sha":"ebc9be7c8d3d11123a993d51c9d93ae9f2ac017a","user":{"login":"pingcap","id":11855343,"avatar_url":"https://avatars.githubusercontent.com/u/11855343?v=3","gravatar_id":"","url":"https://api.github.com/users/pingcap","html_url":"https://github.com/pingcap","followers_url":"https://api.github.com/users/pingcap/followers","following_url":"https://api.github.com/users/pingcap/following{/other_user}","gists_url":"https://api.github.com/users/pingcap/gists{/gist_id}","starred_url":"https://api.github.com/users/pingcap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pingcap/subscriptions","organizations_url":"https://api.github.com/users/pingcap/orgs","repos_url":"https://api.github.com/users/pingcap/repos","events_url":"https://api.github.com/users/pingcap/events{/privacy}","received_events_url":"https://api.github.com/users/pingcap/received_events","type":"Organization","site_admin":false},"repo":{"id":64188788,"name":"docs-cn","full_name":"pingcap/docs-cn","owner":{"login":"pingcap","id":11855343,"avatar_url":"https://avatars.githubusercontent.com/u/11855343?v=3","gravatar_id":"","url":"https://api.github.com/users/pingcap","html_url":"https://github.com/pingcap","followers_url":"https://api.github.com/users/pingcap/followers","following_url":"https://api.github.com/users/pingcap/following{/other_user}","gists_url":"https://api.github.com/users/pingcap/gists{/gist_id}","starred_url":"https://api.github.com/users/pingcap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pingcap/subscriptions","organizations_url":"https://api.github.com/users/pingcap/orgs","repos_url":"https://api.github.com/users/pingcap/repos","events_url":"https://api.github.com/users/pingcap/events{/privacy}","received_events_url":"https://api.github.com/users/pingcap/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pingcap/docs-cn","description":"TiDB/TiKV/PD documents in Chinese.","fork":false,"url":"https://api.github.com/repos/pingcap/docs-cn","forks_url":"https://api.github.com/repos/pingcap/docs-cn/forks","keys_url":"https://api.github.com/repos/pingcap/docs-cn/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pingcap/docs-cn/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pingcap/docs-cn/teams","hooks_url":"https://api.github.com/repos/pingcap/docs-cn/hooks","issue_events_url":"https://api.github.com/repos/pingcap/docs-cn/issues/events{/number}","events_url":"https://api.github.com/repos/pingcap/docs-cn/events","assignees_url":"https://api.github.com/repos/pingcap/docs-cn/assignees{/user}","branches_url":"https://api.github.com/repos/pingcap/docs-cn/branches{/branch}","tags_url":"https://api.github.com/repos/pingcap/docs-cn/tags","blobs_url":"https://api.github.com/repos/pingcap/docs-cn/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pingcap/docs-cn/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pingcap/docs-cn/git/refs{/sha}","trees_url":"https://api.github.com/repos/pingcap/docs-cn/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pingcap/docs-cn/statuses/{sha}","languages_url":"https://api.github.com/repos/pingcap/docs-cn/languages","stargazers_url":"https://api.github.com/repos/pingcap/docs-cn/stargazers","contributors_url":"https://api.github.com/repos/pingcap/docs-cn/contributors","subscribers_url":"https://api.github.com/repos/pingcap/docs-cn/subscribers","subscription_url":"https://api.github.com/repos/pingcap/docs-cn/subscription","commits_url":"https://api.github.com/repos/pingcap/docs-cn/commits{/sha}","git_commits_url":"https://api.github.com/repos/pingcap/docs-cn/git/commits{/sha}","comments_url":"https://api.github.com/repos/pingcap/docs-cn/comments{/number}","issue_comment_url":"https://api.github.com/repos/pingcap/docs-cn/issues/comments{/number}","contents_url":"https://api.github.com/repos/pingcap/docs-cn/contents/{+path}","compare_url":"https://api.github.com/repos/pingcap/docs-cn/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pingcap/docs-cn/merges","archive_url":"https://api.github.com/repos/pingcap/docs-cn/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pingcap/docs-cn/downloads","issues_url":"https://api.github.com/repos/pingcap/docs-cn/issues{/number}","pulls_url":"https://api.github.com/repos/pingcap/docs-cn/pulls{/number}","milestones_url":"https://api.github.com/repos/pingcap/docs-cn/milestones{/number}","notifications_url":"https://api.github.com/repos/pingcap/docs-cn/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pingcap/docs-cn/labels{/name}","releases_url":"https://api.github.com/repos/pingcap/docs-cn/releases{/id}","deployments_url":"https://api.github.com/repos/pingcap/docs-cn/deployments","created_at":"2016-07-26T04:04:37Z","updated_at":"2016-10-31T06:20:34Z","pushed_at":"2016-11-01T07:06:19Z","git_url":"git://github.com/pingcap/docs-cn.git","ssh_url":"git@github.com:pingcap/docs-cn.git","clone_url":"https://github.com/pingcap/docs-cn.git","svn_url":"https://github.com/pingcap/docs-cn","homepage":null,"size":135,"stargazers_count":23,"watchers_count":23,"language":null,"has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":5,"mirror_url":null,"open_issues_count":5,"forks":5,"open_issues":5,"watchers":23,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pingcap/docs-cn/pulls/21"},"html":{"href":"https://github.com/pingcap/docs-cn/pull/21"},"issue":{"href":"https://api.github.com/repos/pingcap/docs-cn/issues/21"},"comments":{"href":"https://api.github.com/repos/pingcap/docs-cn/issues/21/comments"},"review_comments":{"href":"https://api.github.com/repos/pingcap/docs-cn/pulls/21/comments"},"review_comment":{"href":"https://api.github.com/repos/pingcap/docs-cn/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pingcap/docs-cn/pulls/21/commits"},"statuses":{"href":"https://api.github.com/repos/pingcap/docs-cn/statuses/99695f80a8700538d4520e45f2c44b626b093aa4"}}}}
{"actor":{"display_login":"qiuyesuifeng"}}