# Stage9Model3 **Repository Path**: hot-open-source-project-learning/stage9-model3 ## Basic Information - **Project Name**: Stage9Model3 - **Description**: MySQL分库分表和优化 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2022-02-17 - **Last Updated**: 2022-02-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Stage9Model3 #### 介绍 MySQL分库分表和优化 #### 软件架构 #### 1. centos128和centos129上创建数据库 lg_novel_db: ```mysql CREATE DATABASE lg_novel_db CHARACTER SET 'utf8'; ``` #### 2. 在centos128 和centos129的 lg_novel_db下面创建两张表:小说表 和 系统区域表: ```mysql -- 小说表 CREATE TABLE novel( id BIGINT(20) PRIMARY KEY COMMENT '小说ID', title VARCHAR(50) COMMENT '名称', author VARCHAR(50) COMMENT '作者', pic VARCHAR(255) COMMENT '图片', content TEXT COMMENT '内容介绍' ); -- 系统区域表 CREATE TABLE sys_region ( id BIGINT(20) PRIMARY KEY COMMENT '地区ID', region_name VARCHAR(100) COMMENT '区域名称', region_code VARCHAR(20) COMMENT '行政地区编号', region_level INT COMMENT '等级' ); ``` #### 3. 在centos128上创建数据库 lg_user_db: ```mysql CREATE DATABASE lg_user_db CHARACTER SET 'utf8'; ``` #### 4. 在centos128 的 lg_user_db下面创建三张表:用户表1、用户表2、系统区域表: ```mysql -- 用户表1 CREATE TABLE users_1( id BIGINT(20) PRIMARY KEY COMMENT '用户ID', username VARCHAR(20) COMMENT '用户名', PASSWORD VARCHAR(12) COMMENT '密码', address VARCHAR(20) COMMENT '地址' ); -- 用户表2 CREATE TABLE users_2( id BIGINT(20) PRIMARY KEY COMMENT '用户ID', username VARCHAR(20) COMMENT '用户名', PASSWORD VARCHAR(12) COMMENT '密码', address VARCHAR(20) COMMENT '地址' ); -- 系统区域表 CREATE TABLE sys_region ( id BIGINT(20) PRIMARY KEY COMMENT '地区ID', region_name VARCHAR(100) COMMENT '区域名称', region_code VARCHAR(20) COMMENT '行政地区编号', region_level INT COMMENT '等级' ); ``` #### 5. 编辑centos128 /etc/my.cnf文件,设置内容如下: ```mysql log-bin=mysql-bin server-id=1 binlog-do-db=lg_novel_db binlog_ignore_db=mysql ``` #### 6. 重启centos128 的mysql服务 ```bash service mysqld restart ``` #### 7. 在主数据库上, 创建一个允许从数据库来访问的用户账号. ```mysql -- 创建账号 GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.52.11' IDENTIFIED BY 'Qwer@1234'; ``` #### 8. 在从数据库设置相关信息 ```mysql STOP SLAVE; CHANGE MASTER TO MASTER_HOST='192.168.199.128', MASTER_USER='slave', MASTER_PASSWORD='Qwer@1234', MASTER_PORT=3306, MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=0, MASTER_CONNECT_RETRY=10; ``` #### 9. 修改auto.cnf中的UUID,保证唯一 ```bash -- 编辑auto.cnf vim /var/lib/mysql/auto.cnf -- 修改UUID的值 server-uuid=a402ac7f-c392-11ea-ad18-000c2980a208 -- 重启 service mysqld restart ``` #### 10. 在从服务器上,启动slave 进程 ```mysql start slave; -- 查看状态 SHOW SLAVE STATUS; -- 命令行下查看状态 执行 SHOW SLAVE STATUS \G; ``` 注意: 这两个参数的值,必须是 Yes,否则就要进行错误的排查 #### 11. 测试:往主库centos128下的lg_novel_db下插入一条数据,看是否在从库也会插入一条数据: ```mysql INSERT INTO novel values(99,'西游记', '吴承恩', 'aa.png','唐僧四徒到西天取经'); select * from novel; -- 在centos29下的lg_novel_db执行下面sql,发现这边已经有数据了,说明主从复制已经设置好了 select * from novel; ``` #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)