首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Windows服务从主数据库中自动重新生成从数据库中的从数据库?

问如何使用Windows服务从主数据库中自动重新生成从数据库中的从数据库?
EN

Stack Overflow用户
提问于 2018-02-13 04:57:42
回答 2查看 1.3K关注 0票数 0

我正在编写一个Windows程序来不断地将本地从数据库同步到主数据库。我有一个名为nsbm_syncdb的主数据库。如果我想同步从数据库,我必须编写以下查询。

代码语言:javascript
复制
CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='nsbm_root',
MASTER_PASSWORD='1234',
MASTER_LOG_FILE='mysql-bin.0000xx',
MASTER_LOG_POS=234;

对于上面的代码,我应该从主数据库中输入MASTER_LOG_FILE和MASTER_LOG_POS的值,输入查询"SHOW MASTER STATUS"。

如何使用MySql查询从主数据库检索日志位置和日志文件名?

我上网了,但还没有找到一个查询。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-13 05:03:28

您可以使用mysqldump程序(随MySQL一起提供)和-主-数据=2选项。

这将将完整的CHANGE MASTER ...命令写入输出。

票数 0
EN

Stack Overflow用户

发布于 2018-02-14 10:56:37

我们可以在windows服务程序中编写C#代码来访问SHOW MASTER STATUS表的值。这不是一张现有的桌子。因此,我们必须创建一个DataTable,并在其中填充SHOW MASTER STATUS的细节。

代码语言:javascript
复制
string master_log_file = null;
long master_log_pos = 0;

        using (MySqlConnection con = new MySqlConnection(conStrM))
        {
            using (MySqlCommand cmd = new MySqlCommand("SHOW MASTER STATUS", con))
            {
                cmd.CommandType = CommandType.Text;
                using (MySqlDataAdapter sda = new MySqlDataAdapter(cmd))
                {
                    if (sda != null)
                    {
                        using (DataTable dt = new DataTable())
                        {
                            sda.Fill(dt);
                            foreach (DataRow row in dt.Rows)
                            {
                                master_log_file = row["File"].ToString();
                                master_log_pos = Convert.ToInt64(row["Position"]);
                            }
                        }
                    }

                }
            }
        }

从上面的代码中我们可以得到master_log_file和master_log_pos。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48759721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档