mysql 数据库时间格式,date,datetime
1.主从库的数据库版本尽量一致
2.确保数据相同
– 从库必须要有主库上的数据。
3.配置主服务器
– 启用binlog 日志
– 设置server_id
– 设置要同步的数据库
– 设置授权用户
基本构建思路 1.主从库的数据库版本尽量一致 2.确保数据相同 – 从库必须要有主库上的数据。 3.配置主服务器 – 启用binlog 日志 – 设置server_id – 设置要同步的数据库 – 设置授权用户 – 记录需要同步的日志文件名及日志开始位置。 4.配置从服务器 – 设置 server_id – 设置要同步的数据库 – 指定主数据库服务器信息 测试配置 – 客户端连接主库,写入的数据,在连接从库的时候也能够访问到。 下载并安装Navicat 下载及安装激活过程可以查看这篇文章,介绍得很详细: 下载及安装MySQL8.0 下载 MySQL8.0下载地址: 安装 解压并配置my.ini 下载后解压到E盘根目录,将文件夹重命名为mysql-master,进入mysql-master文件夹,新建my.ini文件,写入以下内容: [client] port=3307 设置客户端字符集 default-character-set=utf8 [mysqld] 绑定IPv4 bind-address = 0.0.0.0 设置端口号 port=3307 character_set_server=utf8 设置mysql的安装目录,即你解压缩安装包的位置 basedir=E:/mysql-master 设置mysql数据库的数据的存放目录 datadir=E:/mysql-master/data 允许最大连接数 max_connections = 200 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES default-storage-engine=INNODB [WinMySQLAdmin] Server = E:/mysql-master/bin/mysqld.exe 由于我的3306端口已被占用,故配置文件写的3307。 初始化data目录 "E:/mysql-master/bin/mysqld" --initialize-insecure --user=mysql 安装mysql服务 "E:/mysql-master/bin/mysqld" install mysql-master --defaults-file="E:/mysql-master/my.ini" 启动MySQL服务 net start mysql-master 修改root账号密码 刚安装完成时root账号默认密码为空,此时可以将密码修改为指定的密码。如:123456 登录数据库: "E:/mysql-master/bin/mysql" -uroot -P3307 修改密码: user mysql; ALTER user 'root'@'localhost' IDENTIFIED BY '123456' 按相同的方法安装另一个mysql服务,文件夹和服务命名为:mysql-slave。 PS:从解压开始,不要为了方便直接复制文件夹。注意替换命令中的路径。 安装完成后,在计算机管理->服务中可以看到两个mysql服务都为启动状态: 在Navicat中新建两个数据库链接,分别为mysql-master和mysql-slave,确保都可以连上。 同时为两个数据库都创建一个名为test的数据库,该数据库将用于同步。 环境说明 主Mysql(mysql-master): ip:127.0.0.1 端口:3307 账号:root 密码:123456 同步数据库名称:test 从MySQL(mysql-slave): ip:127.0.0.1 端口:3308 账号:root 密码:123456 同步数据库名称:test 目标:mysql-master和mysql-slave实现test数据库的主从同步。 配置主库(mysql-master) 修改主库my.ini配置文件 在my.ini的配置文件中,添加如下信息: [mysqld] log-bin=mysql-bin server-id=3307 binlog-ignore-db=information_schema binlog-do-db=test log-bin:表示启用binlog功能,并指定二进制日志的存储目录 server-id:指定唯一的servr ID,两台数据库的server-id必须是不一样的数字,这里为了方便,用端口号作为server-id,一般线上环境可以用ip地址的最后一段作为server-id。 binlog-ignore-db:binlog日志不记录指定库的更新 binlog-do-db:binlog日志只记录指定库的更新 重启主库 net stop mysql-master net start mysql-master 创建用于同步的账号 在mysql-master创建一个账号,该账号用于mysql-slave连接到mysql-master,允许该账号在mysql-master上读取日志,赋予mysql-slave有File权限及REPLICATION SLAVE的权限。 1.选中mysql-master数据库,点击“用户”->“新建用户”: 2.填写用户名及密码 例如用户名填写:slave,密码填写:slave123 密码过期策略设置为NEVER 主机填写slave的IP地址,这里是127.0.0.1 3.切换至“服务器权限”,勾选File和Replication Slave,点击保存: 4.登录至mysql-slave数据库,测试是否可以使用账号连接到mysql-master 登录上去后Mysql修改密码,输入mysql命令: show variables like '%server_id%'; 如果显示server_id为3307则说明从库可以顺利连上主库。 线上情况如果连不上,需要检查防火墙是否阻挡或者阿里云安全组是否限制了。 重启主库,登录mysql,查看主库信息 重启mysql-master,登录mysql,查看mysql-master信息: show master status; File是同步会使用到的binlog文件 配置从库(mysql-slave) 修改mysql-slave的my.ini配置文件 [mysqld] log-bin=mysql-bin server-id=3308 binlog-ignore-db=information_schema replicate-do-db=test replicate-ignore-db=mysql log-slave-updates slave-skip-errors=all slave-net-timeout=60 replicate-do-db:要进行主从复制的数据库名 replicate-ignore-db:不进行主从复制的数据库名 log-slave-updates:记录从库更新,允许链式复制( A-B-C )。当该从库作为其他库的主库时,需要添加该参数 重启mysql-slave,进入mysql,配置同步 stop slave; change master to master_host='127.0.0.1',master_port=3307,master_user='slave',master_password='slave123',master_log_file='mysql-bin.000001', master_log_pos=0; start slave; master_host:主库的ip地址,这里为127.0.0.1 master_port:主库的端口,默认为3306,这里为3307 master_user:同步账号,这里为slave master_password:同步账号的密码,这里为slave123 master_log_file:开始同步的日志文件 master_log_pos:开始同步的日志的开始位置 查看同步状态 show slave status 如果Slave_IO_Running和Slave_SQL_Running的值都是Yes,说明配置成功。 如果Slave_IO_Running为No,则查看后面的Last_IO_Error字段,里面会有详细的出错原因。 如果Slave_SQL_Running为No,则查看后面的Last_SQL_Error字段,里面会有详细的出错原因。 测试同步 在mysql-master中的test数据库中新建一个表,然后查看mysql-slave中的test数据库是否同步也创建了。 从库IO线程 和SQL线程的作用 IO线程 把主库binlog日志里的sql命令记录到本机的中继日志文件 SQL线程 执行本机中继日志文件里的sql命令,把数据写进本机。 ———————————————— 版权声明:本文为CSDN博主「织梦猫dedemao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接: (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |