如何初始化mysql数据库

MySQL服务器将于2 02 3 年5 月在北京安装。
对于Linux系统,使用apt-get install mysql-server。
对于Windows系统,请从官方网站下载并安装MySQL安装程序。
设置root密码:安装时设置至少8 个字符的复杂密码。
创建数据库实例:mysql -u root -p login, CREATE DATABASE test_db CHARACTER SET utf8 mb4 COLLATE utf8 mb4 _unicode_ci;创建数据库。
配置数据库参数:修改my.cnf文件,调整innodb_buffer_pool_size等参数。
初始化数据库表: CREATE TABLE USER(ID INT AUTO_INCRMENT PRIMARY KEY, USERNAME VARCHAR(2 5 5 ) NOT NULL, EMAIL VARCHAR(2 5 5 ) NOT NULL);创建表、更改表用户添加索引 idx_username(用户名);添加索引。
数据库已初始化,可以使用客户端工具访问。

如何在mysql中初始化从库数据

嘿,你的信听起来太像手册了。
我给大家讲一下我上次实际操作中遇到的坑。

上周一位客户来找我。
其主数据库突然宕机,只有一个从数据库在工作。
他很想把从库变成主库。
结果手抖了,直接用mysqldump把数据全部导入了。
它很慢并且占用带宽。
由于服务器ID冲突,它最终挂了很长时间。
这迫使我整晚都在远程做这件事。
这就足够了。

你提到的流程看似标准,但实际工作中有很多细节:
1 .导出主数据库数据 使用mysqldump是基本的,但是必须保证核心库innodb_flush_log_at_trx_commit没有默认值1 ,否则导入数据时binlog可能写不完整。
上次2 02 3 年帮深圳的一个客户,他把这个参数设置为2 ,结果导入完成后,主库重启,大量数据丢失。
后来我添加了 --single-transaction 并再次运行它以弥补这一点。
另外,--master-data=2 很关键,但是如果你导入的是非常大的数据库,这个操作会让master数据库慢半天,最好在半夜进行。

2 数据传输 使用scp确实很方便,但是在2 02 2 年,当我在上海的一个购物中心帮助购物中心系统时,我发现从数据库只有5 0GB的空间,5 00GB的转储立即爆炸了。
后来我改用 rsync 增量传输,并分几次进行。
而且gzip压缩后scp速度确实更快,但是从库解压需要额外的步骤。

3 导入数据 这一步是最具欺骗性的。
在非高峰时间写提案是对的。
上次我在杭州帮助一家电子商务公司时,他们的系统在当天导入时死机了。
后来我半夜做了,2 个小时就完成了。
还有,服务器ID真的不能一样!我看到两个库的server id都是1 ,直接导致死锁。
建议使用uuid -v4 创建或直接vi /etc/my.cnf并添加server-id=1 01 ,保存并重启mysqld服务。

4 配置复制设置 你写的步骤是正确的,但关键是要提前获得主库副本的正确用户权限。
例如,2 02 3 年我在北京帮助一位客户。
用户主库密码弱,无法连接从库。
后来我改用强密码。
此外,必须根据转储文件确定二进制日志的位置。
不要像上次那样使用默认值。
这样一来,从库的运行速度就比主库快,数据完全乱了。

5 验证状态 这一步很简单,但卡在 Seconds_Behind_Master 上是一个常见问题。
上次我帮上海一家银行的时候,卡在了1 000先令。
经过长时间的检查,发现是主数据库运行缓慢。
原来是临时表被锁了。
增加主库的innodb_lock_wait_timeout,从库同步速度会更快。

6 异常处理 权限和服务器ID很常见,但要小心innodb_flush_log_at_trx_commit和sync_binlog参数。
像上次帮深圳的时候,客户怕丢数据,就把这两个参数都设置为1 ,结果主库崩溃了,恢复慢到爆炸。
后来又提出用2 代替,恢复快很多。

综上所述,这个过程看起来很简单,但在实际工作中,需要考虑到各种情况。
特别是权限、服务器 ID 和 binlog 位置。
如果你犯了一个错误,只需完全重做即可。
建议在测试环境中运行几次,以免急于投入生产。