You can change the membership price whenever you want - you don't even need to charge everyone the same amount.
When you record a membership from the back end, you can enter any price you want - simply select Record Membership Payment on the New Membership screen and enter the amount. If you set Contribution Status to Pending, it will show the contribution as owed rather than paid.
On a public-facing page, yes, you can use price sets to set the cost every year.
Because each contribution is stored separately, it's OK that they're different from year to year. You can see which payments have been made and which haven't.
This will meet your needs going forward. However, if you start using CiviCRM in 2020, and you have current members in arrears from 2015, that's not going to be calculated. I would recommend importing pending calculations for each missing payment. You could use your spreadsheet software to calculate owed amounts if necessary.
Consider installing the Membership Extras extension. Without it, a member who pays for 2020 but has not paid previous years is considered a current member; with the extension, a member who has paid the current year but is still in arrears can be considered non-current if you like.