二进制安装mysql数据库并配置主从同步

网友投稿 770 2022-09-20

二进制安装mysql数据库并配置主从同步

二进制安装mysql数据库并配置主从同步

mysql安装版本及-:-qa | grep mysql #rpm -qa | grep mariadb #mariadb-libs-5.5.65-1.el7.x86_64 #yum -y remove mariadb-libs-5.5.65-1.el7.x86_64

创建mysql用户组和mysql用户

# groupadd mysql #useradd -g mysql -s /sbin/nologin mysql

解压安装包

#tar -zxvf mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz -C /usr/local/ # cd /usr/local/ # mv mysql-5.7.26-linux-glibc2.12-x86_64 mysql

设置mysql环境变量

#vi /etc/profile.d/mysql.sh export PATH=/usr/local/mysql/bin:$PATH # source /etc/profile.d/mysql.sh

配置mysql

#mkdir -pv /data/mysql #chown mysql.mysql /data/mysql # chmod go-rwx /data/mysql

初始化数据库并注意日志里面输出的默认密码#yum install -y libaio#mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

配置启动脚本

# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld # chkconfig --add mysqld # chkconfig mysqld on # chkconfig --list |grep mysqld

编辑mysql配置文件/etc/my-f

[client] port = 3306 socket = /tmp/mysql.sock [mysqld] port = 3306 socket = /tmp/mysql.sock pid_file = /data/mysql/mysql.pid datadir = /data/mysql default_storage_engine = InnoDB max_allowed_packet = 512M max_connections = 2048 open_files_limit = 65535 skip-name-resolve lower_case_table_names=1 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect='SET NAMES utf8mb4' innodb_buffer_pool_size = 512M innodb_log_file_size = 1024M innodb_file_per_table = 1 innodb_flush_log_at_trx_commit = 0 key_buffer_size = 64M log-error = /data/mysql/mysql_error.log log-bin = /data/mysql/mysql-bin binlog_format = mixed expire_logs_days = 10 slow_query_log = 1 slow_query_log_file = /data/mysql/slow_query.log long_query_time = 1 server-id=1

启动mysql

vi /etc/init.d/mysqld basedir=/usr/local/mysql //在第46行 datadir=/data/mysql # /etc/init.d/mysqld start Starting MySQL.Logging to '/data/mysql/localhost.localdomain.err'. SUCCESS! # mysql -uroot -p mysql> show databases; ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.#这里错误提示你需要更改默认密码 mysql> alter user 'root'@'localhost' identified by '123456'; Query OK, 0 rows affected (0.00 sec)

常见错误排除:若出现无法登陆数据库可以在/etc/my-f最后一行加入skip-grant-tables,重启mysql后直接mysql登陆数据库,

mysql> use mysql; mysql> update MySQL.user set authentication_string=password('root') where user='root' ; mysql> flush privileges;

更新数据库密码后删除掉my-f最后一行的skip-grant-tables,重启数据库验证新密码是否有效

两台数据库同样方式进行安装,安装完成开始进行主从同步的配置master:192.168.100.10slave:192.168.100.20

注意:从数据库服务器上一定要有主数据库服务器上的库、表且表结构要一致。

配置master数据库服务器

#ls -lrt /data/mysql total 2121876 -rw-r----- 1 mysql mysql 56 May 23 16:06 auto-f drwxr-x--- 2 mysql mysql 8192 May 23 16:06 performance_schema drwxr-x--- 2 mysql mysql 4096 May 23 16:06 mysql drwxr-x--- 2 mysql mysql 8192 May 23 16:06 sys -rw-r----- 1 mysql mysql 29924 May 23 16:40 localhost.localdomain.err -rw-r----- 1 mysql mysql 1073741824 May 23 16:41 ib_logfile1 -rw-r----- 1 mysql mysql 329 May 23 16:43 mysql-bin.000001 -rw-r----- 1 mysql mysql 718 May 23 16:46 mysql-bin.000002 -rw-r----- 1 mysql mysql 872 May 23 17:25 mysql-bin.000003 -rw-r----- 1 mysql mysql 177 May 23 17:43 mysql-bin.000004 drwxr-x--- 2 mysql mysql 52 May 23 17:54 zs -rw-r----- 1 mysql mysql 666 May 23 18:00 mysql-bin.000005 -rw-r----- 1 mysql mysql 300 May 23 18:00 ib_buffer_pool -rw-r----- 1 mysql mysql 1104 May 23 18:00 slow_query.log -rw-r----- 1 mysql mysql 174 May 23 18:00 mysql-bin.index -rw-r----- 1 mysql mysql 5 May 23 18:00 localhost.localdomain.pid -rw-r----- 1 mysql mysql 12582912 May 23 18:00 ibtmp1 -rw-r----- 1 mysql mysql 41881 May 23 18:05 mysql_error.log -rw-r----- 1 mysql mysql 726 May 23 19:14 mysql-bin.000006 -rw-r----- 1 mysql mysql 12582912 May 23 19:15 ibdata1 -rw-r----- 1 mysql mysql 1073741824 May 23 19:15 ib_logfile0 #vi /etc/my-f #log-bin=mysql-bin.000006 server_id=1 #主库为1 从库为2

修改过my-f后重启数据库登陆数据库执行下面的操作:mysql> grant replication slave on . to root@"%" identified by "123456";

配置slave数据库服务器

#vim /etc/my-f server_id=2 log-bin=slavelog #可开可不开

重启数据库管理员登陆

mysql> change master to -> master_host="192.168.100.10", -> master_user="root", -> master_password="123456", -> master_log_file="mysql-bin.000006", 主查询show master status; -> master_log_pos=0; mysql> start slave; Query OK, 0 rows affected (0.01 sec) mysql> show slave status\G; Slave_IO_Running: Yes Slave_SQL_Running: Yes #两个进程状态为yes mysql>show slave status;

测试验证主从状态是否正常,mster库新建数据库和表,并往表中插入数据,查看从库是否新建了同样的数据库和表,并查看表中数据一致性; 主库进行以下操作:

mysql> create database shanghai; Query OK, 1 row affected (0.03 sec) mysql> use shanghai; Database changed mysql> create table user -> ( -> id INT(11), -> name VARCHAR(25), -> deptId INT(11), -> salary FLOAT -> ); Query OK, 0 rows affected (0.07 sec) mysql> insert into user (id,name) values(1,'alex'); Query OK, 1 row affected (0.01 sec) mysql> select *from user; +------+------+--------+--------+ | id | name | deptId | salary | +------+------+--------+--------+ | 1 | alex | NULL | NULL | +------+------+--------+--------+ 1 row in set (0.00 sec)

从库查看是否创建了与主库同样的数据库,并查看数据一致性:

mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | shanghai | | sys | +--------------------+ 5 rows in set (0.00 sec) mysql> use shanghai; mysql> select * from user; +------+------+--------+--------+ | id | name | deptId | salary | +------+------+--------+--------+ | 1 | alex | NULL | NULL | +------+------+--------+--------+ 1 row in set (0.00 sec)

经验证,主库创建数据库并往库内插入数据后,从库会同步主库的所有操作,主从同步正常。 工作原理 slave_io_running:yes 连接主数据库服务器,并把主数据库服务器binlog日志里sql语句拷贝本机的relybinlog日志里。 slave_sql_running:yes 执行本机relybinlog日志里的sql语句,把数据写到数据库里 四、测试主从同步 在主服务器上建库建表删除数据,从服务器会跟着同步; /var/lib/msyql/ master.info 记录连接主数据库服务器的信息 relay-log.info 记录中继binlog日志信息 localhost-relay-bin.000001 localhost-relay-bin.000002 中继binlog日志 localhost-relay-bin.index 保存已有中继binlog日志文件名 常用的其他选项 适用于master服务器 binlog-do-db=name 设置master对哪些库记日志 binlog-ignore-db=name 设置master对哪些库不记日志 log-slave-updates 记录从库更新,允许链式复制(A-B-C) relay-log=dbsvr2-relay-bin 指定中继日志文件名 replicate-do-db=mysql 仅复制指定库,其他库将被忽略,此选项可设置多条(省略时复制所有库) replicate-ignore-db=test 不复制哪些库,其他库将被忽略,ignore-db与go-db只需选用其中一种 report-host=dbsvr2 报告给master的主机名或ip地址 slave-net-timeout=60 出现网络中断时,重试超时(默认60秒)

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:LeetCode 10. 正则表达式匹配 | Python(leetcode积分有什么用)
下一篇:solaris 消除告警信息
相关文章

 发表评论

暂时没有评论,来抢沙发吧~